2012-11-26 65 views
1

如何在特定時間調用ajax自動完成? 這裏,這是我的代碼如何調用ajax自動完成功能?

function auto(x){ 


x.autocomplete('ajax/getFriends',{ 
     max:500, 
     width:300, 
     minChars:2, 
     autoFill: false, 

     formatItem: formatItem, 
     formatResult: formatResult 
     }); 

     function formatItem(row) { 
       return row[0]; 
       //return row[0] + " (<strong>id: " + row[1] + "</strong>)"; 
     } 
     function formatResult(row) { 
      return row[0].replace(/(<.+?>)/gi, ''); 
     } 

     $("#comment").result(function(event, data, formatted) { 
      $("#test1").val(data[1]); 
      $("#test2").val(data[2]); 
     }); 
    } 

但它說錯誤x.autocomplete不是一個函數

我是上述呼籲是一樣

auto("string"); 

任何一個可以幫助我如何解決這一個

在此先感謝 我不好英文如果有任何錯誤請原諒

+0

'autocomplete'不是一個字符串的方法。 –

+0

@asad謝謝但在這裏我的問題是,如果用戶輸入'@'或'#',那麼它執行自動完成只有該字符串是否有任何功能? – naveen

+0

您是否使用官方jQueryUI自動完成插件將自動完成功能綁定到輸入字段? – Prynz

回答

0

我認爲你會混淆jQuery自動完成工作的方式。在我看來,您將自動填充附加到您的字符串,併爲建議構建HTML元素。這不是自動完成功能的工作原理。

你想要做的是將自動完成功能附加到你的輸入框。然後,無論什麼時候輸入內容,自動完成功能都會自動觸發輸入。這就是它的構建方式。

所以我們可以說,例如,你有等於myAwesomeInputBox的ID在你的HTML代碼的輸入框:此輸入字段

<input type="text" id="myAwesomeInputBox"/> 

要綁定自動完成(使用Ajax)只是這樣做在Javascript:

$("#myAwesomeInputBox").autocomplete({ 
       source: function(request, response) { 

         // request.term is the input in the textbox, encode for security reasons 
         var input = encodeURI(request.term); 

         $.ajax({ 

          // your ajax endpoint 
          url: 'ajax/getFriends', 

          // the request method, modify to your actual method 
          type: 'GET', 

          // whatever data you want to pass to your endpoint. 
          // I'm assuming at least the input (with key userInput here) 
          // and maybe the limit of the elements in the response array 
          // the server should send back 
          data: {userInput: input, limit: 500}, 

          // what to do on success (process the response) 
          success: function(data){ 

           // assuming your ajax endpoint returns a JSON encoded array with the suggestions as a response 
           var responseArray = $.parseJSON(data); 

           // pass the decoded response array to the jquery defined response method for autocomplete 
           response(responseArray); 
          }, 

          // what to do if the server returns an error 
          error: function(jqXHR, textStatus, errorThrown){ 
           // pass an empty suggestions array maybe? 
           response(new Array()); 
          } 
          }, 'json'); 
        } 
      }); 

對我來說最棘手的部分是

response(responseArray); 

,但一旦你檢查它是可以理解的。您只需將數組傳遞給jQuery自動完成處理程序以進行進一步處理。

我不確定以前的jQuery版本如何處理ajax自動完成,但是這是版本1.8.0(和更高版本)如何處理它。