在焦点上打开jQuery UI ComboBox

时间:2011-11-03 05:29:55

标签: jquery jquery-ui

我有一个jQuery ComboBox输入,在聚焦时我想自动打开自动完成菜单。

然而,只需清除输入并将其聚焦如下:

$('#select-id').val('').focus();

......不起作用。如果您手动对焦自动完成输入然后清除它,它会显示自动完成菜单。

有没有办法可以触发自动完成菜单以便在焦点上打开?我也希望它显示完整的菜单,所以我也想清除输入文本。

2 个答案:

答案 0 :(得分:8)

假设您正在使用组合框,它是自动完成小部件的扩展名:

$("your_selector").bind("focus", function () {
    this.value = '';
    $(this).autocomplete("search", '');
});

应该可以正常工作。

工作示例(普通自动填充小部件):http://jsfiddle.net/gEuTV/

答案 1 :(得分:0)

如果你对jqueryui组合框的每个实例都需要这个功能,不仅对于特定的选择器,你可以将它放在$(widget(“custom-combobox”,{statement)中  (它的好地方是_createShowAllButton上方或下方)

_showAll: function() 
        var input = this.input, 
            wasOpen = false; 
        $(input)
            .focus(function() {
                wasOpen = input.autocomplete("widget").is(":visible");
            });
             .click(function() {
                input.focus(); // this fires the call above.

                // Close if already visible
                if (wasOpen) {
                    return;
                }
                input.autocomplete("search", "");
            });
    },

这简单地复制了show all按钮的功能,在焦点上触发它。这使得不必为每个语句创建单独的绑定,并且可以在您拥有的每个组合框上工作。