[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要素が何番目の要素かを知る