我目前正在使用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({ .......
可能是因为输入被禁用,在我通过单击空白区域或点击另一个组合框失去焦点后,组合框不会隐藏(输入元素具有模糊事件处理程序,但它不会触发)。
有没有办法在禁用的输入元素上设置模糊事件,或者在用户想要失去焦点时以任何方式隐藏组合框?
答案 0 :(得分:4)
我会重新考虑一下你的策略。自动填充功能不适用于disabled
输入。相反,我会使用readonly
。替换:
.attr("disabled", true)
使用:
.attr("readonly", true)
您将获得input
中的光标,但您的原始要求已得到满足。
答案 1 :(得分:0)
您需要更改:
.attr("disabled", true);
以强>
.attr("disabled", "disabled");
看看这个小提琴:http://jsfiddle.net/Lq8tq/1/
我希望这有帮助!
答案 2 :(得分:0)
试试这个。
$('comboboxname').combobox('disable');
$('comboboxname').combobox('enable');