30,000 を超える回答を含む大きなデータベースがあります。入力値の長さが3であるかどうかを検索するためにkeypイベントをテキストボックスにバインドします。そのため、これらの3文字で始まるデータベースからレコードを取得するサーバーにajax呼び出しを行い、ソースでjqueryオートコンプリートを開始します-データ問題は、ユーザーが 3 文字を入力したときです。オートコンプリートが開始される 4 文字目を入力したときにのみ、オートコンプリートのソースを取得します。その動作を変更して、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();
}