从JavaScript启动更改事件

时间:2012-08-29 19:24:55

标签: jquery

我有:

<input name="X">

并在JavaScript中:

$('input').on('change','[name=X]',function() {
        $('body').append('on change fired!');
    }
);
$('input[name=X]').change(function() {
    $('body').append('change fired!');
});
$(input[name='X']).val('test');

但我的问题是两个更改事件都没有被触发。

3 个答案:

答案 0 :(得分:4)

您的选择器周围缺少引号,以及添加触发器的方式?

$("input[name='X']").val("test").trigger("change");

fiddle

答案 1 :(得分:1)

确保您使用的是现成的块

jsFiddle

$(function(){
   $('input').on('change','[name=X]',function() {
        $('body').append('on change fired!');
   });
   $('input[name=X]').change(function() {
       $('body').append('change fired!');
   });
   $(input[name='X']).val('test'); 
});

如果你试图以编程方式简单地触发:

$('input[name=X]').change(); // trigger change event

答案 2 :(得分:1)

以编程方式更改输入元素的值不会触发任何事件。或者,您可以在.change之后拨打.val,如下所示

$('input[name=X]').val('test').change();

修改:修复了输入选择器周围缺少的引号。

DEMO: http://jsfiddle.net/G6n4h/1/