我有一個超過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();
}
如果你正在使用'jquery',那你爲什麼不使用'jquery ajax'函數呢? –
條件'if(newstr.length == 3)'只有在'string length等於3'時才起作用,'keyup'事件在按下鍵後按'ups ups'時才起作用,你可以使用'keydown event '如果這能解決你的問題。 –