2013-02-05 51 views
0

在我的代碼中,我將一個keyup事件綁定到我的輸入以檢查輸入值的長度是否爲3. 如果是,我向獲取記錄的服務器發出Ajax調用從我的數據庫開始,輸入這3個字符,然後用源代碼 - 數據庫中的數據啓動jQuery自動完成。在我的Ajax調用服務器之後立即啓動jQuery自動完成

問題是,當用戶輸入三個大字,我得到的信號源。autocomlete,只有當他進入第四個字符的自動完成啓動。是否有可能改變這種行爲,並儘快輸入3個字符並讓源開始自動完成?

這裏是我的代碼:

var keypresshandler = function() { 
     var strin = document.getElementById('txtInput').value; 
     newstr = strin.replace(/[^\u0400-\u04FF0-9]/gi, ''); 
     if (newstr.length<3) 
     { 
       $("#txtInput").autocomplete("destroy"); 
     } else  
      if (newstr.length==3) 
      { 
       triming();  
      } 
    } 


    $(function() {  
     $('#txtInput').bind('keyup', keypresshandler); 
    }); 

    function triming() { 
     //make asynchronous ajax call to server to get the source of my autocomplete      
     // alert (mec.length);  
     $("#txtInput").autocomplete({source: mec}); 
    } 

    } 

回答

0

簡單:當兩個字符呼叫trimming()

您所看到的效果是autocomplete()只是設置自動完成的,它並沒有「開始」吧。自動完成由autocomplete()安裝的按鍵處理程序啓動。所以你需要安裝處理程序一個字符「太早」。

+0

不,我不能叫兩個字符後,修邊,因爲有兩個大部分記錄是有任何其他方式 –

+0

@MilkaSalkova:你試過了嗎?它只能在下一個按鍵之後發送請求,所以它會用三個查詢!如果你仍然害怕,爲什麼不使用'minLength:3'選項? –

+0

我用它 - 不起作用! –

相關問題