【问题标题】:jquery ui autocomplete: trigger only when item is not selectedjquery ui自动完成:仅在未选择项目时触发
【发布时间】:2011-09-16 16:38:44
【问题描述】:

我试图弄清楚如何使 jquery ui 选择的“相反”。当有人没有选择一个选项而只是输入“jquery something”时,输出将是: “新输入:jquery 的东西”。 However when the "jquery" is selected it would be nice to somehow only have "selected from list: jquery", and prevent the keypress propogation.但是,这两个事件都会触发。我正在努力做到这一点。

<input class="test" type="text" />

<script>
$('.test').autocomplete({
    select: function (event, ui) {
        alert('selected from list: ' + ui.item.label);
        event.preventDefault();
        return false;
    },
    source: ["jquery", "jquery ui", "sizzle"]
});
$('.test').live('keypress', function (e) {
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
        alert('new input: ' + $(this).val());
    }
});
</script>

这是假设“输入”键用于从 ui 的菜单中选择一个选项。

【问题讨论】:

  • 当我运行它时,它会在我键入时显示键,但如果我选择一个值,它不会显示任何按键事件,即使使用箭头键也是如此。请澄清问题,或者至少告诉我它的最终用途是什么,以便我更好地了解如何提供帮助。
  • 我将其更改为警报。 Console.log 用于萤火虫。也可以使用“enter”键输入。

标签: jquery-ui jquery-ui-autocomplete


【解决方案1】:

您可以使用autocompletechange 事件来完成此操作。使用此事件,您可以确定用户是否选择了选项或输入了不在列表中的内容:

$("#auto").autocomplete({
    source: ['hi', 'bye', 'foo', 'bar'],
    change: function(event, ui) {
        console.log(this.value);
        if (ui.item == null) {
            $("span").text("new item: " + this.value);
        } else {
            $("span").text("selected item: " + ui.item.value);
        }
    }
});

示例: http://jsfiddle.net/Ne9FH/

【讨论】:

  • 如果我可以通过按键输入和动态数据源触发更改事件,那将非常有用。但最好的答案在这里,我没有提到任何关于数据源的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
相关资源
最近更新 更多