5

私たちが知っているように、入力すると多くのイベントがトリガーされます。

キーアップ、キーダウン、キープレスなど。

テキストフィールドの内容が変更された場合にのみトリガーされる他のイベントはありますか?ない場合は、この機能を実現するためのjavasrciptコードの記述方法

4

2 に答える 2

2

変更イベントが役立つ場合がありますか?

于 2011-08-30T15:05:39.740 に答える
0

contenteditable 要素のテキスト ノードがキーを押して変更されたときに何が起こるかを判断するための簡単なフィドルを作成しました。そうこうしているうちに、自分の仕事でibusを使っているので、ibusを使うとどうなるか調べてみることにしました。ibus を使用すると、生成される唯一のキーボード イベントは、which役に立たない値を持つ keyup イベントであると判断しました。

ここに私が作成したフィドルがあります:

http://jsfiddle.net/lddubeau/jWnL3/

  1. そのフィドルに行きます。

  2. Javascript コンソールをオンにします。

  3. 実行をクリックします。

  4. 「toto」という単語の 2dn と 3 文字目の間をクリックします。

  5. ibus を使用して何かを入力します。たとえば、「我」と入力します。

  6. 出力はブラウザによって異なります。Chrome 29 では、各キーストロークが記録されるため、tonepy メソッドを使用して 我 と入力すると、「w」、「o」、「3」、および「1」のそれぞれに対してキーアップとキーダウンが取得されます。(ピンイン、トーン、次に 1 を押して最初の選択肢を選択します。) 最終的なイベントは次のとおりです。

    event type: keyup
    which: 229
    keyCode: 229
    charCode: 0
    node value: 
       to我to
    

    これより前のイベントはすべて同じ値を持ちますが、いくつかは「keydown」タイプであり、もちろんノード値は最後のイベントまで「toto」を示します。

    Firefox 23 では、1 つのイベントのみが登録されます。

    "event type:" "keyup"
    "which:" 49
    "keyCode:" 49
    "charCode:" 0
    "node value:" "
        to我to
    "
    

    keydown または keypress イベントは生成されません。(ASCII 範囲内の文字を入力すると、キーごとに keydown、keypress、keyup が取得されます。)

which と keyCode の値は、意味のあるものには対応していないようです。イベント ハンドラーに渡されたイベント オブジェクトを調べましたが、ユーザーが「我」と入力したことを示すフィールドは見つかりませんでした。

于 2013-03-22T20:56:20.890 に答える