2

我已经在 StackOverflow 中浏览了很多答案,我认为以前没有人遇到过这个问题。这有点奇怪,但是当我尝试限制 jQuery Autocomplete 中的结果时,它就不起作用了。

我不知道我可以在这里准确粘贴什么,所以我将粘贴一小段代码,你告诉我缺少什么。

$("input[type=search]").autocomplete({
    delay: 0,
    autoFocus: true,
    source: function (request, response) {
        populate(request.term, response);

        result = $.ui.autocomplete.filter(result, request.term)

        response(result.slice(0, 10));
    }
});

我不知道自己做错了什么,但是当我进行搜索时,这根本行不通!我仍然看到很多(很多,很多,很多)结果。

我能做些什么来解决这个问题?

4

2 回答 2

1

看起来您可能将源选项http://api.jqueryui.com/autocomplete/#option-source与响应选项http://api.jqueryui.com/autocomplete/#event-response混淆了

检查文档,看看这样设置是否有帮助:

$("input[type=search]").autocomplete({
    delay: 0,
    autoFocus: true,
    source: function (request, response) {
        // return data you want to search against
    },
    response: function(event, ui) {
        // manipulate result data in ui.content and return
    }
}

});

于 2013-09-24T02:10:39.267 回答
1

对我有用的东西是以这种方式引用事物。

<script>

$(":input[data-autocomplete]").each(function () {
$(this).autocomplete({
    delay: 0,
    autoFocus: true,
        source: $(this).attr("data-autocomplete"),
        select: function (event, ui) {
            if (ui.item) {
                alert(ui.item.id);
            }
        }
    });
}); 
</script>

然后使用标准 javascript 数据引用自动完成服务器端脚本的位置

<input type="text" data-autocomplete="/Home/QuickSearch" />

这允许不止一个快速搜索,还可以处理对服务器端位置的更改引用。

在您自己的代码中,如果您保留开头行,请确保将输入类型设置为搜索

<input type="search" />
于 2013-09-24T02:36:16.313 回答