如何判断是否从 JQuery UI 自动完成中选择了建议

发布于 2024-12-05 17:33:46 字数 312 浏览 0 评论 0原文

我有一个连接到 JQuery UI 自动完成的文本框。当用户在框中输入内容时,我的搜索通过 ajax 调用运行并返回建议。似乎可能会发生三件事:

  1. 自动完成建议选项,用户选择其中之一
  2. 自动完成建议选项,但用户选择不选择其中任何一个
  3. 自动完成无法提出建议 - 不匹配(因此建议列表不匹配)显示)

处理上述所有场景,我如何判断用户是否从自动完成中选择了一个选项?

我已经研究过在搜索开始(match = false)和选择发生(match = true)时标记一个标志,但这似乎不是一个非常简洁的做事方式。

I have a text box that is wired to JQuery UI Autocomplete. As the user types in the box my search runs via an ajax call and returns suggestions. It seems that three things can happen:

  1. The autocomplete suggests options and the user selects one of them
  2. The autocomplete suggests options but the user chooses to select none of them
  3. The autocomplete can not make a suggestion - no match (so the list of suggestions do not display)

Dealing with all of the scenarios above, how can I tell if the user selects an option from the autocomplete?

I have looked into marking a flag when a search commences (match=false) and a select occurs (match=true) but this doesn't seem a very neat way of doing things.

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

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

发布评论

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

评论(3

素手挽清风 2024-12-12 17:33:46

您可以使用 select 事件,例如 @bfavaretto 指出,但我认为在这种情况下使用更方便更改事件:

$("#auto").autocomplete({
    source: ['hi', 'bye', 'foo', 'bar'],
    change: function(event, ui) {
        if (ui.item) {
            $("span").text(ui.item.value);
        } else {
            $("span").text("user picked new value");
        }
    }
});

示例: http://jsfiddle. net/andrewwhitaker/3FX2n/

change 在字段模糊时触发,但与本机 change 事件不同,您可以获得有关用户是否单击了某个按钮的信息。事件(如果用户没有点击建议,ui.item 为 null)。

You can use the select event like @bfavaretto points out, but I think in this situation it's more convenient to use the change event:

$("#auto").autocomplete({
    source: ['hi', 'bye', 'foo', 'bar'],
    change: function(event, ui) {
        if (ui.item) {
            $("span").text(ui.item.value);
        } else {
            $("span").text("user picked new value");
        }
    }
});

Example: http://jsfiddle.net/andrewwhitaker/3FX2n/

change fires when the field is blurred, but unlike the native change event, you get information about whether or not the user clicked an event (ui.item is null if the user did not click a suggestion).

森林很绿却致人迷途 2024-12-12 17:33:46

当用户选择一个选项时,会触发“select”事件。您可以收听它并设置一个标志。

(function() {
    var optionSelected = false;
    $( ".selector" ).autocomplete({
        select: function(event, ui) { optionSelected = true; }
    });
})();

When a user selects an option, the 'select' event is fired. You can listen to it and set a flag.

(function() {
    var optionSelected = false;
    $( ".selector" ).autocomplete({
        select: function(event, ui) { optionSelected = true; }
    });
})();
乞讨 2024-12-12 17:33:46

jQueryUI 提供了一个 select 事件,您应该在中定义它自动完成选项(当您将自动完成功能应用于表单输入时)。

例如(来自 docs):

$( ".selector" ).autocomplete({
   select: function(event, ui) { ... }
});

您可以通过 访问所选项目ui.item 来自事件处理程序内部。

jQueryUI provides a select event, you should define it in the autocomplete options (when you apply the autocomplete to your form input).

For example (from the docs):

$( ".selector" ).autocomplete({
   select: function(event, ui) { ... }
});

You can access the selected item via ui.item from inside the event handler.

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