2010-05-03 52 views
1

包裹呢?这里是我的问题,多个自动完成呼叫:使用自动完成的jQuery插件,我想避免多个AJAX请求时,用户通过与类似避免由setTimeout的

围绕

$('#query1').autocomplete({ 
        serviceUrl:'/actions/autocomplete?population=salon', 
        minChars:3, 
        maxHeight:300, 
        width:200, 
        clearCache:true, 
        onSelect: function(suggestions,data){ $(".btn1").attr("href", "${pageContext.request.contextPath}/actions/espaceClients?participantId=" + data) } 
       }); 

打击他的keynoard

   var search = false; 
      $('#query1, #query2, #query3').keyup(function(){ 
       if (!search){ 
        search = true; 
       } 
       if (search) { 
        search = false; 
        autocompleteThem(); 
       } 
      }); 

你可以看到,上面的代码是愚蠢的,但它有点显示我想要做什么。

简而言之,如果用户在某段时间内没有键入任何内容,则可以调用自动完成功能。

我希望我被清楚的,我的大脑一片混乱......

+0

我找类似你做什么,你会请分享示例代码?你使用的是asp.net吗? – 2010-05-04 14:11:45

回答

4

使用deferRequestBy option上的插件,像这样:

$('#query1').autocomplete({ 
       serviceUrl:'/actions/autocomplete?population=salon', 
       minChars:3, 
       maxHeight:300, 
       width:200, 
       clearCache:true, 
       deferRequestBy: 200, //200ms 
       onSelect: function(suggestions,data){ $(".btn1").attr("href", "${pageContext.request.contextPath}/actions/espaceClients?participantId=" + data) } 
      }); 
+0

我是有时候这样的废话... – pixelboy 2010-05-03 12:28:30

3

你真的想阻止多个simultanious请求?这会阻止这个插件的有用性。您可以向请求添加延迟,也可以使用插件(例如AjaxQueue)确保结果以正确的顺序返回浏览器。

要使用内置delay参数(由手动):

击键 后 自动完成等待以毫秒为单位的延迟,以激活自身。零延迟使 对本地数据有意义(更多 响应),但可以为远程数据产生大量的 负载,同时响应更少的 。

使用指定的延迟选项初始化自动完成。

$(".selector").autocomplete({ delay: 0 }); 

获取或延迟选项设置,初始化后。

//getter 
var delay = $(".selector").autocomplete("option", "delay"); 
//setter 
$(".selector").autocomplete("option", "delay", 0); 

延迟参数为autocomplete plugin you're using应的是

deferRequestBy 
+0

对不起,我忘了提及我正在使用一个外部插件:http://www.devbridge.com/projects/autocomplete/jquery/ – pixelboy 2010-05-03 12:23:59