1

我是一个 jQuery 新手,并试图与 jQuery typewatch 一起实现自动完成功能。也就是说,要在某个时间段后从 Web 服务获取数据,比如 750 毫秒,而不是在 minLength 之后。

<script type="text/javascript">
    $(document).ready(function () {
        $('.searchinput').autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "/Services/SampleWebService.asmx/GetProduct",
                    data: '{"searchString":"' + request.term + '"}',
                    dataType: "json",
                    async: true,
                    success: function (data) {
                        response(data);
                    }
                });
            },
        });
        $('.searchinput').typewatch({
            callback: $.autocomplete,
            wait: 750,
            highlight: false
        });
    });

我的自动完成功能绝对可以正常工作,但不知何故我无法将 typewatch 包含在内。我确信存在我不知道的严重编码失败。

谢谢

4

2 回答 2

3

jquery 自动完成有这个选项作为参数称为延迟:

http://api.jqueryui.com/autocomplete/#option-delay

因此,您要做的就是更改该参数,并将 typewatch 删除为:

  $(document).ready(function () {
        $('.searchinput').autocomplete({
            delay:750,
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "/Services/SampleWebService.asmx/GetProduct",
                    data: '{"searchString":"' + request.term + '"}',
                    dataType: "json",
                    async: true,
                    success: function (data) {
                        response(data);
                    }
                });
            },
        });
    });
于 2012-10-24T17:55:41.443 回答
0

称为“延迟”的参数是您必须在 keydown 之后等待调用外部服务的时间。这只是为了不要让没有“敏感”搜索数据的服务超载。

我从用户问题中了解到,他想每 750 毫秒调用一次自动完成“更新”功能。

您可以使用以下方法更改 typewatch “段”:

$('.searchinput').typewatch({
    callback: function(){
        $(".searchinput").data("autocomplete").search();
    },
    wait: 750,
    highlight: false
});

这将触发对服务的搜索并每 750 毫秒显示一次弹出响应

于 2012-10-24T18:02:11.757 回答