我绑定了一个简单的处理程序来更改select元素的事件,如下所示
$("#ddlPincode").change(function() {
alert("Hello");
UpdateMapFromPincode();
});
但是当我更改pincode下拉列表时,没有任何反应。 Firebug中也没有错误。
当更改另一个select元素(ddlCity)时,ddlPincode为空,并且通过ajax调用添加元素。我绑定事件处理程序的上述代码最初位于$(function(){})中,其中存在其他jquery代码。然后,我将select从服务器绑定到resultSet后,将其置于ajax调用的成功之中。这也没有做任何事情
答案 0 :(得分:1)
请注意,select
元素仅在字段失去焦点时才会触发onchange
。要始终触发更改事件,请选择触发change
事件上的keyup
事件:
$("select").keyup(function() { $(this).trigger('change'); });
这将确保select始终触发change事件。请注意,如果值实际上没有更改,因为keyup没有更改选择,则事件仍将触发。
答案 1 :(得分:0)
您的代码应该完美无缺。如果您重新创建此下拉控件,唯一的依赖。这是我的测试代码:
HTML
<input type="button" id="btn" value="Fill" />
<select id="ddl"></select>
JS
$(function() {
$('#btn').click(function() {
for (var index = 0; index < 10; index++) {
$('#ddl').append('<option>' + index + '</option>');
}
});
$('#ddl').change(function() {
alert('changed');
});
});
答案 2 :(得分:0)
我认为你应该在jquery上发布整个html或小提琴,因为我已经尝试了这个并且它适用于我,你的代码看起来还不错(这里不需要使用live()或delegate() ):
答案 3 :(得分:0)
我认为你正在使用其他一些jquery插件来增强选择框,即像jqtranform一样,如果我们使用这样的插件,那么jquery change事件将无法工作,因为它为nice ui创建了另一个包装器。
请检查此建议......