2012-04-04 15 views
4
$('input').change(function(){ 
    alert($(this).val()); 
}); 
$('input').val(1); 

これは動作しません。 JavaScriptで変更入力をキャプチャする必要があります:-sjqueryで入力の変更イベントをキャプチャする方法は?

ありがとうございました。

+0

ご質問は不明です。あなたが持っている "変更"ハンドラは、適切な時に(つまり、 '

2

あなたが「準備完了」関数の中でこれらの機能を配置する必要があります。

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

は、あなたもこれを行うことができます。もちろん、1

の値を持つように入力を初期化:そのあなたの心に留めておくhttp://jsfiddle.net/SfjJQ/1/

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

:フィドルを参照してください

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

'.val()'の呼び出しによってイベントが引き起こされることはありません。 – Pointy

+0

それは –

+0

であるはずです質問の私の解釈は、Mr.さんが '.val(1)'への呼び出しが "変更"ハンドラをトリガすることを期待していたことです。私は間違っているかもしれません。問題はまばらで不思議です。 – Pointy

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/

関連する問題