0

我有:

<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');

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

4

3 回答 3

4

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

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

小提琴_

于 2012-08-29T19:28:42.633 回答
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
于 2012-08-29T19:26:54.643 回答
1

以编程方式更改输入元素的值不会触发任何事件。或者,您可以像下面这样调用.change.val

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

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

演示:http: //jsfiddle.net/G6n4h/1/

于 2012-08-29T19:27:05.110 回答