如何使用jquery捕获输入中的更改事件?

时间:2012-04-04 14:42:02

标签: javascript jquery onchange

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

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

感谢。

3 个答案:

答案 0 :(得分:8)

<input>元素的程序化更改不会导致事件。只有用户互动。

你可以这样做:

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

答案 1 :(得分:2)

您必须将这些功能放在“就绪”功能中。看小提琴: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');
});​

答案 2 :(得分: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/