[jQuery] $(‘form’).change()でフォーム全体の変更を監視する
スポンサーリンク
jQueryのchange()メソッドは、フォーム要素の値に変更があった時、それを察知して反応します。inputやtextarea、selectにバインドして使うことがほとんどだと思います。
<form action='#' method='post'>
フルネーム<input type='text' name='fullname'>
パスワード<input type='password' name='pass'>
<input type='submit'>
</form>
<script>
$("input[name=fullname]").change(function(){
//フルネーム欄が変更されると発火
});
$("input[name=password]").change(function(){
//パスワード欄が変更されると発火
});
</script>
しかし、change()メソッドはformタグそのものにもバインドが可能です。formにバインドすると、フォーム内の要素に加えられた変更をすべて察知することができます。
<form action='#' method='post'>
フルネーム<input type='text' name='fullname'>
パスワード<input type='password' name='pass'>
<input type='submit'>
</form>
<script>
$("form").change(function(){
//フォーム内の要素に変更があると発火
});
</script>
しかし、このままでは、フォーム内のどの要素に変更が加えられたかを知ることができません。そこで、以下のようにすることで、changeメソッドが反応するきっかけとなった要素を知ることができます。
<form action='#' method='post'>
フルネーム<input type='text' name='fullname'>
パスワード<input type='password' name='pass'>
<input type='submit'>
</form>
<script>
$("form").change(function(e){
var target = $( e.target )
if( target.attr('name') === 'fullname' ){
//フルネーム欄の変更があった際の処理
}elseif( target.attr('name') === 'password' ){
//パスワード欄の変更があった際の処理
}
});
</script>
change()に渡したイベントオブジェクトのe.targetが変更のあったDOMエレメントなので、これを8行目でjQueryオブジェクト化し、変数targetに代入しています。target.attr('name')でname属性が分かるので、これで変更のあった要素が特定できるというわけです。
スポンサーリンク
jQueryカテゴリーの投稿
- [jQuery] $.ajaxのコールバック関数にcontextで値を渡す
- [jQuery] 文字列が含まれているかどうかの判定
- [jQuery] rowspanを持つtableで行の表示・非表示を切り替える
- [jQuery] find()とchildren()の使い分け
- jQueryとPHPでAJAX通信を行う
- [jQuery] 属性が存在するかどうかチェックするコード
- [JS][jQuery] 要素の存在を確認する6通りのコードと実行速度
- [jQuery] tableの内容を取得する
- [jQuery] clone()で操作対象のエレメントを元の位置に保つ
- [jQuery] index()でクリックされたhtml要素が何番目の要素かを知る