在我的Ajax调用服务器后立即启动jQuery自动完成

时间:2013-02-05 08:22:22

标签: javascript jquery

在我的代码中,我将keyup事件绑定到我的输入,以检查输入值的长度是否为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() {
         //make asynchronous ajax call to server to get the source of my autocomplete                    
         // alert (mec.length);       
         $( "#txtInput" ).autocomplete({source: mec});
     }

   }

1 个答案:

答案 0 :(得分:0)

简单:在两个字符后调用trimming()

您看到的效果是autocomplete()只是设置自动完成,它不会“启动”它。自动完成由autocomplete()安装的按键处理程序启动。所以你需要将处理程序安装一个字符“太早”。