Jquery UI自动完成组合框禁用输入

时间:2011-11-24 14:02:20

标签: javascript jquery jquery-ui

我目前正在使用Jquery-UI自动完成插件combobox实现,但是我更改了脚本以便插件添加的输入元素被禁用(用户无法在输入中写入,他只能单击按钮以查看选项),如下所示:

$.widget("ui.combobox", {

_create: function () {
    var self = this,
                    select = this.element.hide(),
                    selected = select.children(":selected"),
                    value = selected.val() ? $.trim(selected.text()) : "";
    var input = this.input = $("<input>")
                .attr("name", select.attr("name"))
                .attr('disabled', true)
                .insertAfter(select)
                .val(value)
                .autocomplete({ .......

可能是因为输入被禁用,在我通过单击空白区域或点击另一个组合框失去焦点后,组合框不会隐藏(输入元素具有模糊事件处理程序,但它不会触发)。

有没有办法在禁用的输入元素上设置模糊事件,或者在用户想要失去焦点时以任何方式隐藏组合框?

3 个答案:

答案 0 :(得分:4)

我会重新考虑一下你的策略。自动填充功能不适用于disabled输入。相反,我会使用readonly。替换:

.attr("disabled", true)

使用:

.attr("readonly", true)

您将获得input中的光标,但您的原始要求已得到满足。

示例: http://jsfiddle.net/S77xa/1/

答案 1 :(得分:0)

您需要更改:

.attr("disabled", true);

.attr("disabled", "disabled");

看看这个小提琴:http://jsfiddle.net/Lq8tq/1/

我希望这有帮助!

答案 2 :(得分:0)

试试这个。

$('comboboxname').combobox('disable');

$('comboboxname').combobox('enable');