3

フォームに 2 つのフィールドがあります。ブラウザがそれらの値を変更したときにイベントを処理する必要があります。フィールドはユーザー名とパスワードです。私はこれを使用しまし$('input').on('input change',function(e){//...})たが、ブラウザによってポップアップされたリストでユーザー名を選択すると、パスワードの値が変更されますが'input'、その場合、パスワードのイベントは機能しません。

どうすればそれを処理できますか?

コード:

HTML:

<form action="/">
  <input name="username" type="text" />
  <br />
  <input name="password" type="password" />
  <br />
  <input type="submit"/>
</form>

J:

$('input[type="password"]').on('change keyup',function(event){
  console.log(event.type);
});

パスワードフィールドに入力しているときは機能していますが、ブラウザのオートコンプリートがパスワード値を変更しているときは機能しません。

4

2 に答える 2

2

これはブラウザの動作であり、スクリプトに関するものではありません。これを回避する簡単な方法はないと思います。

回避策は、タイマーを設定してフィールドの変化を定期的にチェックすることです。

もう 1 つの回避策は、前の値onfocusをキャプチャするように を設定し、変更後の値をキャプチャして値が変化した場合に比較するようにイベントを設定することです。onblur

フィールド値が変更されたときにイベントを処理することが重要な場合。autocomplete="off"フィールドで指定してブラウザのオートコンプリートを無効にし、オプションでオートコンプリートを自分で実装する必要があると思います。

詳細については、このリンクを参照してください。

于 2013-08-11T11:13:58.337 に答える
0

ドキュメントが言う$('input').on('change', function(e){//...})ようにする必要があります

.on( イベント [, セレクター] [, データ], ハンドラー(イベントオブジェクト) )

これも試すことができます:

$('input[type=text], input[type=password]').on('change', function(e){//...})
于 2013-08-11T09:02:02.897 に答える