11

ユーザーが入力するとすぐに、テキスト ボックス コントロールを変更するたびに関数を実行したいと思います。ほとんどの場合、イベント.keyup()は問題ありません。

ただし、ブラウザー (Chrome や Firefox など) は、テキスト ボックス コントロールのオートコンプリート エントリを提案する場合があります (おそらく、入力コントロールの @name または @id がわかっているため)。

残念ながら、「提案されたエントリをクリックする」ときに、以下のイベントを発生させることはできません。(.keyup()キーボードで選択すると発火)

$('input#email')
  .click(function() { console.log('click'); })
  .keyup(function() { console.log('keyup'); })
  .keydown(function() { console.log('keydown'); })
  .change(function() { console.log('change'); })
  .focus(function() { console.log('focus'); })
  .blur(function() { console.log('blur'); });

setInterval()定期点検は極力避けたい。

この「提案を選択」イベントを検出する方法はありますか?

4

4 に答える 4

5

短い答えはノーです。提案の選択を検出するためのイベントはありません。DOM ミューテーション オブザーバーを調べてみることもできますが、これらが属性の変更をカバーしているかどうかはわかりません。とにかく、これまでのところ、この API のサポートはほとんどありません。

したがって、このケースを本当に処理する必要がある場合は、それsetIntervalが唯一の選択肢だと思います。

propertychange編集:3年後、新しく受け入れられた回答のようにjQueryで使用できます(フードの下で突然変異オブザーバーを使用していると思います)。

于 2012-06-15T10:49:34.377 に答える
0

変更イベントは正常に機能しているように見えますが、クリックする必要があります

于 2014-03-10T00:09:14.407 に答える