autocomplete :如何更改仅包含以 input-word 开头的元素的结果列表?

发布于 2025-01-07 14:03:32 字数 408 浏览 0 评论 0原文

我有这样的代码:

<script type="text/javascript">
    var myList = [ "Avellino", "Enna", "Frosinone" ];

    $("#myTextBox").autocomplete({
        source: myList,
        appendTo: "#myOwnMenuProvince"
    });    
</script>

现在,如果我输入e,我只想看到列表中e开头的单词,而不是那个包含e。因此,在上面的示例中,只有 Enna

我该怎么做呢?

I have this code :

<script type="text/javascript">
    var myList = [ "Avellino", "Enna", "Frosinone" ];

    $("#myTextBox").autocomplete({
        source: myList,
        appendTo: "#myOwnMenuProvince"
    });    
</script>

Now, if I digit e I'd like to see only words in the list that start with e, not that contain e. So, in the example above, only Enna.

How can I do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

止于盛夏 2025-01-14 14:03:32

默认情况下,插件使用方法$.ui.autocomplete.filter。此方法使用正则表达式对数据的标签/值属性执行 grep 操作,并返回过滤后的数据。让我们从中得到启发来进行过滤。

要使用您自己的过滤方法,请使用 source 选项作为回调。

  • request 参数是一个包含一个属性term 的对象。它包含要搜索的文本,基本上是输入字段的值。因此,如果您在输入字段中键入“en”,request.term 将具有该值。

  • response 参数是一个回调。你调用它,传递过滤后的数据,显示数据,基本上显示结果弹出菜单。

所以基本上,您将过滤数据并将过滤后的数组传递给“响应”回调。

这是一种方法:

$("#myTextBox").autocomplete({
    source: function(request, response) {
        // filter your data
        var data = $.grep(myList, function(value) {
            return value.substring(0, request.term.length).toLowerCase() == request.term.toLowerCase();
        });
        // pass it to the response callback for display
        response(data);
    }
});​

DEMO

By default, the plugin uses the method $.ui.autocomplete.filter. This method does a grep using a regular expression on the label/value properties of the data and returns the filtered data. Let's inspire ourselves from that to make our filtering.

To use your own filtering method, use the source option as a callback.

  • the request parameter is an object containing one property term. It contains the text to search for, basically the value of the input field. So if you type "en" in the input field, request.term will have that value.

  • the response parameter is a callback. You call it, passing the filtered data, to display the data, basically show the results popup menu.

So basically, you would filter your data and pass the filtered array to the `response´ callback.

Here's one way to do it:

$("#myTextBox").autocomplete({
    source: function(request, response) {
        // filter your data
        var data = $.grep(myList, function(value) {
            return value.substring(0, request.term.length).toLowerCase() == request.term.toLowerCase();
        });
        // pass it to the response callback for display
        response(data);
    }
});​

DEMO

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文