Ich habe den Code mehrmals durchgesehen und kann nicht herausfinden, warum der erste Tastendruck nicht zu zählen scheint.

Wenn der Textbereich eine leere Zeichenfolge ist, sollte die Zähleranzeige genau lesen. Aber es scheint, dass der Textbereich zweimal leer sein muss .......

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

0
ndreckshage 10 Okt. 2012 im 02:38

3 Antworten

Beste Antwort

Versuchen Sie stattdessen, das Ereignis keyup anzuhören.

Das Ereignis keypress wird ausgelöst, wenn das tatsächliche Zeichen in den Textbereich eingefügt wird. Wenn Sie den Wert des Textbereichs - message.get('value') lesen, wird der alte Wert vor dem Ereignis keypress zurückgegeben. Dies erklärt, warum der Zähler eine veraltete (ungenaue) Anzahl verbleibender Zeichen anzeigt.

Weitere Informationen zu keydown, keypress und keyup Ereignissen: http://www.quirksmode.org/dom/events/keys.html


UPDATE:

Es gibt eine bessere Möglichkeit, Änderungen an <input> und <textarea> zu erkennen.

Das YUI-Modul event-valuechange bietet ein valuechange -Ereignis, das wird ausgelöst, wenn der Benutzer den Eingabewert ändert durch:

  • ein einfaches Zeichen eingeben
  • Eingabe eines Mehrstrichzeichens
  • Verwenden eines Eingabemethoden-Editors
  • Ausschneiden oder Einfügen in den Wert mit Strg + X oder Cmd + V.
  • Ausschneiden oder Einfügen mit einem über die Tastatur aufgerufenen Kontextmenü; oder
  • Ausschneiden oder Einfügen aus dem Kontextmenü mit der rechten Maustaste.

So verwenden Sie es für eine Eingabe mit der ID message:

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

Live-Demo: http://jsfiddle.net/Pd9X9/

2
Andrew 10 Okt. 2012 im 03:22

Verwenden Sie 'keyup' als Ereignisauslöser

0
Jay Sparks 9 Okt. 2012 im 22:53

Wechseln Sie zum keyup -Ereignis und es funktioniert für mich hier einwandfrei: http://jsfiddle.net/jfriend00 / grZW7 /. Das Tastendruckereignis tritt nur bei einigen Tasten auf und kann auftreten, BEVOR der Text des Feldes aktualisiert wird, während keyup immer danach auftritt.

1
jfriend00 9 Okt. 2012 im 22:51