2

onchangeフォームの変化を検出し、特定の JavaScript 関数を実行する目的でイベント属性があることに気付きました。ただし、これはユーザーがフォーム フィールドの外側をクリックする必要があるため、 と非常によく似ていonblurます。

ユーザーがフォームの外側をクリックするのを待たずに、フォームが変更されたときに機能を実行する方法は実際にありますか?

JavaScript タイムアウトを使用して数ミリ秒ごとにフォームをチェックできることは知っていますが、それらを使用しないソリューションをお勧めします。また、フォーム要素だけに限定されているわけではありません。使って大丈夫ですcontenteditable divs

コードは必要ないと思いますが、必要に応じて意味のサンプル コードを追加できます。

4

3 に答える 3

1

フォーム内の任意のタイプの入力 (テキストだけでなく、チェックボックス、選択リスト、ラジオ ボタンなど) が変更されたときに確実にキャッチしたい場合は、私がまとめた次のスニペットを使用できます (jQuery を使用していると仮定します)。

$('form input[type=text]').keyup(formUpdated);

$('form input[type!=text], form select').change(formUpdated);

function formUpdated() {
    alert('input changed');
}

ここで実際の動作を見ることができます。

これはすべて、これの必要性を取り除く良い方法です:

<input type="text" onkeyup="formUpdated();">

<select onchange="formUpdated();">
</select>

<input type="radio" onchange="formUpdated();">

<input type="checkbox" onchange="formUpdated();">
于 2012-12-23T18:46:24.487 に答える
1

jQuery には目的を達成するための強力な関数がありますが、単純なスクリプトを実行する必要があるだけの場合は、onkeydown や onkeypress などの関数を使用できます。

<input type="text" onkeydown="myFunction()">

ソース:

W3 スクール - OnKeyPress

W3 スクール - OnKeyDown

于 2012-12-23T17:29:07.680 に答える
1

これを自分で行うとしたら、フォームの入力で変更イベントをリッスンします。個人的には、jQuery を使用した方が簡単だと思います。

$('form input, form select').change(function() {
    console.log('form has been changed');
});
于 2012-12-23T17:29:36.983 に答える