0

コードを何度か調べましたが、最初のキーストロークがカウントされないように見える理由がわかりません。

textarea が空の文字列の場合、カウンター表示は正確に読み取られる必要があります。しかし、テキストエリアを2回空にする必要があるようです........

http://jsfiddle.net/ndreckshage/zVQZR/

4

3 に答える 3

2

keyup代わりにイベントを聞いてみてください。

keypressイベントは、実際の文字がテキストエリアに挿入されているときに発生します。textarea —の値を読み取ると、イベントが返される前message.get('value')古い値。これは、カウンターに古い(不正確な)文字数が残っている理由を説明しています。keypress

keydown、、keypressおよびkeyupイベントの詳細: http ://www.quirksmode.org/dom/events/keys.html


アップデート:

<input>およびへの変更を検出するためのより良い方法があり<textarea>ます。

YUIevent-valuechangeモジュールは、ユーザーが次の方法で入力値を変更したときに発生するvaluechangeイベントを提供します。

  • 単純な文字を入力する
  • マルチストローク文字の入力
  • 入力方式エディターの使用
  • Ctrl+XまたはCmd+Vを使用して、値から切り取りまたは値に貼り付けます
  • キーボードで呼び出されるコンテキストメニューを使用した切り取りまたは貼り付け。また
  • 右クリックのコンテキストメニューから切り取りまたは貼り付けます。

IDの入力で使用する方法は次のmessageとおりです。

YUI().use('event-valuechange', function (Y) {
    Y.one('#message').on('valueChange', function (e) {
        // The value has changed! Handle it here...
    });
});

ライブデモ: http: //jsfiddle.net/Pd9X9/

于 2012-10-09T22:45:42.787 に答える
1

keyupイベントに変更すると、 http: //jsfiddle.net/jfriend00/grZW7/で問題なく動作します。keypress イベントは一部のキーでのみ発生し、フィールドのテキストが更新される前に発生する可能性がありますが、keyup常に後で発生します。

于 2012-10-09T22:51:02.927 に答える
0

イベントトリガーとして「keyup」を使用

于 2012-10-09T22:53:58.613 に答える