2011-08-11 35 views
2

所以问题是自动完成组合框被初始化没有更改事件。之后我想将其绑定,但文档似乎对组合框不够充分。JQuery UI - 如何将更改事件绑定到组合框?

码不起作用:因为在组合框内嵌标签是“选择”例如

$('#select').combobox(); 
... 
$('#select').bind("autocompletechange", function(event, ui) { 
    alert('changed'); 
}); 

我猜测的事件标签是错误的$('#select').combobox({selected : function(ev,ui) { alert('selected'); }});的作品,但我不能用这种方式。

因此,任何想法什么是事件的正确标签?我在文档中找不到它。

编辑:其实我发现我的问题在哪里。 $('#select').combobox();只是将选择映射到自动完成输入。它创建的输入有一个像id='select-autocomplete'这样的id,因此绑定并且事件到该组合框 - 选择器应该在该输入上,而不是在选择上。所以工作代码:

$('#select').combobox(); 
    ... 
$('#select-autocomplete').bind("autocompletechange", function(event, ui) { 
    alert('changed'); 
}); 
+0

您遇到的问题是什么?基本上,自动完成更改事件应该在字段模糊时触发。 (失去焦点)如果你将焦点放在另一个领域,你没有看到警报吗? – evasilchenko

回答

0

所以,我发现比绑定事件更清晰的解决方案创建.ui-combobox输入。你应该在输入被初始化的组合框代码中找到,并找到选择参数。 对这部分代码进行更改:

select: function(event, ui) { 
    ui.item.option.selected = true; 
    that._trigger("selected", event, { 
     item: ui.item.option 
    }); 
    that.element.trigger('change');// here is the trick 
}, 
+0

只是为了链接:有一个更多的解释类似的答案可以找到[这里](http://stackoverflow.com/a/4761830/2098939)。 – Griddo