2013-02-05 52 views
0

在我的代码中,我将一个keyup事件绑定到我的输入以检查输入值的长度是否为3. 如果是,我向获取记录的服务器发出Ajax调用从我的数据库开始,输入这3个字符,然后用源代码 - 数据库中的数据启动jQuery自动完成。在我的Ajax调用服务器之后立即启动jQuery自动完成

问题是,当用户输入三个大字,我得到的信号源。autocomlete,只有当他进入第四个字符的自动完成启动。是否有可能改变这种行为,并尽快输入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}); 
    } 

    } 

回答

0

简单:当两个字符呼叫trimming()

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

+0

不,我不能叫两个字符后,修边,因为有两个大部分记录是有任何其他方式 –

+0

@MilkaSalkova:你试过了吗?它只能在下一个按键之后发送请求,所以它会用三个查询!如果你仍然害怕,为什么不使用'minLength:3'选项? –

+0

我用它 - 不起作用! –

相关问题