1

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

    }
4

1 に答える 1