1. ホーム
  2. javascript

[解決済み] jQueryでフォームの変更をどのように処理するか?

2023-04-18 10:15:03

質問

jQueryで、もし をテストする簡単な方法はありますか? が変更されたかどうかを調べる簡単な方法はありますか?

フォームがあり、以下のようなボタンがあるとします。 click() というイベントがあります。

$('#mybutton').click(function() {
  // Here is where is need to test
  if(/* FORM has changed */) {
     // Do something
  }
});

フォームが読み込まれてから変更されたかどうか、どのようにテストしますか?

どのように解決するのですか?

こうすればいいのです。

$("form :input").change(function() {
  $(this).closest('form').data('changed', true);
});
$('#mybutton').click(function() {
  if($(this).closest('form').data('changed')) {
     //do something
  }
});

これは change イベントハンドラを実装し、フォームの入力に変更があった場合は .data() を設定します。 changed に値を設定します。 true を指定すると、クリック時にその値をチェックするだけです。 #mybutton がフォームの中にあることが前提です (そうでない場合は、単に $(this).closest('form')$('#myForm') のように)、さらに一般的なものにすることができます。

$('.checkChangedbutton').click(function() {
  if($(this).closest('form').data('changed')) {
     //do something
  }
});

参考文献です。 更新

jQueryによると、これはすべてのフォームコントロールを選択するためのフィルタです。

http://api.jquery.com/input-selector/

<ブロッククオート

input セレクタは、基本的にすべてのフォームコントロールを選択します。