1

这是我的问题:使用自动完成 jQuery 插件,当用户通过包围

$('#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) }
                });

有类似的东西

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

你可以看到,上面的代码很愚蠢,但它有点显示我正在尝试做的事情。

简单来说,如果用户在一段时间内没有输入任何其他内容,那么您可以调用自动完成。

我希望我是清楚的,因为我的大脑是一团糟......

4

2 回答 2

4

使用该插件上的deferRequestBy选项,如下所示:

$('#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) }
            });
于 2010-05-03T12:26:58.750 回答
3

您真的要防止多个同时请求吗?这将抑制此插件的有用性。您可以为请求添加延迟,或者使用AjaxQueue等插件来确保结果以正确的顺序返回到浏览器。

要使用内置延迟参数(来自手册):

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

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

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

在 init 之后获取或设置延迟选项。

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

您正在使用的自动完成插件的延迟参数的等价物是

deferRequestBy
于 2010-05-03T12:21:46.107 回答