我有以下代码,我尝试在jQuery中为select组合框创建on change事件处理程序,但我从未看到警告消息。这有什么不对?
$(document).ready(function () {
var combo = $("#Supplier_Sel").combobox();
$($('.ui-combobox-input')[3]).css('width', '300px');
$("#toggle").click(function () {
$("#Supplier_Sel").toggle();
});
//this change event never gets fired. WHY??
$("#Supplier_Sel").change("dssd",function () {
alert('Handler for .change() called.');
});
});
另外,我在页面中包含了以下脚本。可能我需要为combobox onchange事件添加一些其他脚本吗?
<script type="text/javascript" src="../jquery/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../jquery/ui/jquery-ui-1.8.21.custom.js"></script>
<script type="text/javascript" src="../jquery/jquery.scrollIntoView.min.js"></script>
答案 0 :(得分:4)
这会让每个人大吃一惊。但对我而言, 似乎就像火箭科学 。大声笑。 要触发jQuery组合框的更改事件,您应该始终使用如下代码。这篇文章中提到的各种方法都不会这样做。 我们需要在jQuery中为select元素调用组合框方法时对事件进行连接。此外,更改事件永远不会触发,但如果以上述方式连接,则所选事件始终会触发。
$(document).ready(function () {
$("#Supplier_Sel").combobox({
selected: function (event, ui) {
alert('Handler for .change() called.');
}
});
$($('.ui-combobox-input')[3]).css('width', '300px');
$("#toggle").click(function () {
$("#Supplier_Sel").toggle();
});
});
如果你看一下组合框小部件jQuery代码,上面的方法是有道理的。如下所示。
select: function( event, ui ) {
ui.item.option.selected = true;
//select.val( ui.item.option.value );
self._trigger( "selected", event, {
item: ui.item.option
});
}
答案 1 :(得分:1)
我不知道.combobox()
方法做了什么,但我怀疑它需要一个实际的组合框并用它做一些HTML技巧。所以它可能实际上不再是一个下拉列表,并且没有使用onChange方法。
如果您提供了一个指向哪个库具有.combobox()
方法的链接,有人可以检查,但我很确定它会成为一些跨度和文本输入元素(如jQuery) UI版本)。这些都没有改变方法。
答案 2 :(得分:1)
下面的代码对我有用。测试
如果选择简单的组合框,则使用下面的代码更改事件触发器;
$("#mySelectCombo").on('change', function () {
alert("test");
});
如果基于Jquery选择组合,则使用下面的代码更改事件触发器;
$("#mySelectCombo").combobox({
select: function (event, ui) {
alert("hello");
}
});
答案 3 :(得分:1)
这对我有用:
$("#combobox_old").combobox({
selected: function (event, ui) {
alert('Handler for .selected() called.');
}
});
Murugesan Bakthavachal,也写了解决方案(对我而言),但我认为其他代码不起作用,因为$.widget( "ui.combobox" , {...});
代码已经有一个变更事件的定义,所以遵循代码不起作用:
$("#mySelectCombo").on('change', function () {
alert("test");
});
答案 4 :(得分:0)
$("#Supplier_Sel").change(function () {
alert('Handler for .change() called.');
});
删除"dssd"
答案 5 :(得分:0)
//Assuming Supplier_Sel is the selectbox id,this will be all you need
$("#Supplier_Sel").change(function () {
alert('Handler for .change() called.');
});
//or if its dynamically generated then
$('body').delegate('#Supplier_Sel','change',function () {
alert('Handler for .change() called.');
});
答案 6 :(得分:0)
尝试:
$('#Supplier_Sel').live('change',function(){
alert('Handler for .change() called.');
});
答案 7 :(得分:0)
这是从jquery组合框触发事件的另一种方法。
其他人发布了:
How to trigger change in jqueryui combobox after underlying select is manually changed?