1

我有一个包含 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(); 

    }
4

1 回答 1

-1

我的朋友遇到了同样的问题,最终我们发现input标签上的事件处理程序必须设置为onkeyup.

于 2014-03-26T20:55:59.590 回答