2013-02-05 63 views
1

我有一個超過30,000個答案的大型數據庫!我將一個keyp事件綁定到我的文本框來搜索輸入值長度是3,所以我做了一個ajax調用服務器從數據庫中獲取記錄,這些記錄以這3個字符開頭,然後使用源代碼啓動jquery自動完成 - 數據庫,但問題是當用戶輸入三個字符時,只有當他輸入自動完成開始的第四個字符時,我才能得到autocomlete的源代碼。是否有可能改變這種行爲,一旦你輸入3個字符開始自動完成如何在我的ajax調用服務器後立即啓動jquery自動完成功能

在此先感謝

我的代碼

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() 
    { 


     xmlhttp.onreadystatechange = function() 
     { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
       alert(xmlhttp.responseText); 

       var xmlObj = xmlhttp.responseXML; 
       var textXML = xmlObj.documentElement.firstChild.firstChild.nodeValue; 


       if (window.DOMParser) 
       { 
        parser=new DOMParser(); 
        var xmlDoc=parser.parseFromString(textXML,"text/xml"); 
       } 
       else // Internet Explorer 
       { 
        var xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
        xmlDoc.async=false; 
        xmlDoc.loadXML(textXML); 
       } 

       var rows = xmlDoc.getElementsByTagName("row"); 
       rowsn = rows.length; 
       for (i=0;i<rowsn;i++) 
       { 
        var cols=rows[i].getElementsByTagName("colunm"); 
        colsn=cols.length; 


        for (var j=0; j<colsn; j++) 
        { 

         mec[i] = cols[j].getAttribute("colvalue"); 

        } 

       } 
       // alert (rec.length); 

       $("#txtInput").autocomplete({source: mec}); 


      } 

     } 


     var url = "http://localhost:9091/localbusscat/services/localbusscat/FindEl?myel="+ encodeURIComponent(newstr); 
    // alert (url); 
     xmlhttp.open("GET", url, true); 
     xmlhttp.send(); 

    } 
+0

如果你正在使用'jquery',那你爲什麼不使用'jquery ajax'函數呢? –

+0

條件'if(newstr.length == 3)'只有在'string length等於3'時才起作用,'keyup'事件在按下鍵後按'ups ups'時才起作用,你可以使用'keydown event '如果這能解決你的問題。 –

回答

-1

我的朋友有同樣的問題,最終我們想出事件input標記處理程序必須設置爲onkeyup

+0

看起來他正在用這行設置$'('#txtInput')。bind('keyup',keypresshandler);' –

相關問題