使用typewatch进行jquery自动完成

时间:2012-10-24 17:39:02

标签: asp.net jquery

我是一个jQuery新手,并试图与jQuery typewatch一起实现自动完成功能。也就是说,要在一段时间后从网络服务获取数据,比如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的内容包括在内。我确信有一个严重的编码失败,我不知道。

由于

2 个答案:

答案 0 :(得分:3)

jquery autocomplete将此选项作为参数调用delay:

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);
                    }
                });
            },
        });
    });

答案 1 :(得分:0)

名为“延迟”的参数是您必须等待更长时间才能调用外部服务的时间。这只是为了不过载没有“敏感”搜索数据的服务。

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

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

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

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