Jquery更改不为select元素触发

时间:2011-11-15 07:51:44

标签: jquery

我绑定了一个简单的处理程序来更改select元素的事件,如下所示

  $("#ddlPincode").change(function() {
        alert("Hello");
        UpdateMapFromPincode();
    });

但是当我更改pincode下拉列表时,没有任何反应。 Firebug中也没有错误。

当更改另一个select元素(ddlCity)时,ddlPincode为空,并且通过ajax调用添加元素。我绑定事件处理程序的上述代码最初位于$(function(){})中,其中存在其他jquery代码。然后,我将select从服务器绑定到resultSet后,将其置于ajax调用的成功之中。这也没有做任何事情

4 个答案:

答案 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');
    });
});

代码:http://jsfiddle.net/qGg87/2/

答案 2 :(得分:0)

我认为你应该在jquery上发布整个html或小提琴,因为我已经尝试了这个并且它适用于我,你的代码看起来还不错(这里不需要使用live()delegate() ):

http://jsfiddle.net/qYqG8/

答案 3 :(得分:0)

我认为你正在使用其他一些jquery插件来增强选择框,即像jqtranform一样,如果我们使用这样的插件,那么jquery change事件将无法工作,因为它为nice ui创建了另一个包装器。

请检查此建议......