2010-11-18 6 views
3

入力テキストフィールドの変更をリッスンする最も推奨される方法の1つは、そのフィールドをキーアップイベントにバインドすることです。ほとんどの場合、それは正常に動作します。しかし、これは動作していない場合があります。たとえば、Firefoxでは、テキストがすでに選択されているときにコンテキストメニューを使用して削除するオプションがあります。そして、これはキーアップイベントを起こさない。私はこれを行うときにそのテキストフィールドのために解雇されたイベントは見つかりませんでした。 純粋なJavascriptまたはjQueryでこれにどのように反応することができますか?入力値の削除をリッスンします

答えて

8

oninputイベントを参照してください。それについては、hereと書いてください。

oninputは、切り取り、貼り付け、元に戻す、やり直し、消去、ドラッグアンドドロップやスペルの修正を含む、あらゆる形式のテキスト入力を実行します。これはInternet Explorer 8以降ではサポートされていないHTML 5イベントです(ただし最新のIE 9プレビューにあります)。ただし、Internet ExplorerはすべてのDOMオブジェクト(onpropertychange)の独自イベントをサポートしています。これは、入力要素の値が変化するたびに発生します。私はあなたがしたので、あなたが —でタグ付けしたい気付かなかった

、それは私がoninputイベントクロスブラウザを実装するためのプラグインを書いたことを、おそらく言及する価値があります。あなたはhereを見つけることができます。

+0

あなたはこの問題を縫い上げていると思います。 –

+0

@Tim:ハハ、私は確かにしようとしています:-) –

+0

@Tim:彼は彼のブログ記事で言及しているバグ以外、ええ。 –

0

focusイベントに値を格納し、blurイベントの値を再確認することをお勧めします。キーイベントを聞くと、通常は冗長なプロセスが多く発生します。ほとんどの場合、ユーザーはフィールド値の入力(または削除)が完了したときにのみ、フィールド値でインターラストされます。

一部のブラウザでは、フォーカス/ブラーの委任が問題になることがありますが、これはクロスブラウザで動作します。最も簡単な方法は、ぼかし/フォーカスリスナーを要素に直接適用することです。

例外はautosuggest/completeなどの実装であり、キー入力をデバウンスして、ユーザーが数百ミリ秒間アイドル状態になったときにのみ起動するようにすることもできます。

関連する問題