4
$('input').change(function(){
    alert($(this).val());
});
$('input').val(1);

这行不通。我需要使用 JavaScript 捕获更改输入:-s

谢谢。

4

3 回答 3

8

对元素的编程更改<input>不会导致事件。只有用户交互可以。

但是,您可以这样做:

$('input').val(1).trigger('change');
于 2012-04-04T14:43:05.973 回答
2

您必须将这些功能放在“Ready”功能中。看小提琴:http: //jsfiddle.net/SfjJQ/1/

$(function() {
    $('input').change(function() {
        alert($(this).val());
    });
    $('input').val(1);
    $('input').trigger('change');
});​

请记住,您的:

$('input').val(1);

将输入初始化为值为 1。

当然你也可以这样做:

$(function() {
    $('input')
        .change(function() {
            alert($(this).val());
        })
        .val(1)
        .trigger('change');
});​
于 2012-04-04T14:50:15.303 回答
1

正如其他人所提到的, .val() 不会触发任何事件;但是,您可以向 jQuery 添加一个包装函数,该函数将更改值并在需要时触发事件:

$( function () {

    //-- new jQuery function
    $.fn.changeVal = function () {
        $.fn.val.apply( this, arguments );
        $( this ).trigger( 'change' );
    };

    //-- your updated code
    $('input').change(function(){
        alert($(this).val());
    });
    $('input').changeVal(1);

} );​

http://jsfiddle.net/bA3V2/

于 2012-04-04T15:19:49.403 回答