我有一个包含 30,000 多个答案的大型数据库!我将 keyp 事件绑定到我的文本框以搜索输入值长度是否为 3,因此我对服务器进行 ajax 调用,从数据库中获取以这 3 个字符开头的记录,然后我使用源启动 jquery 自动完成 - 数据来自数据库,但问题是当用户输入三个字符时,只有当他输入自动完成开始的第四个字符时,我才会获得自动完成的来源。是否可以更改该行为,并在您输入 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()
{
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();
}