2012-04-05 10 views
1

Ich schreibe eine Funktion zum Parsen von Wörtern inline in einem contenteditable div und ersetzen Tags (@ ..., # ...) mit einem Anker-Tag. Ich habe es auf das Key-up-Ereignis gefeuert, und es hat perfekt funktioniert. Das Problem war, dass ich die Tags nicht nur ersetzen wollte, nachdem der Benutzer den Space gedrückt hat, sondern auch, nachdem sie ein Nicht-Wort-Zeichen getroffen haben. Da das keyup-Ereignis nur auf die gedrückte Taste und nicht auf das tatsächlich eingegebene Zeichen zugreifen kann, konnte ich keine Interpunktionszeichen erkennen.range.toString() trunkiert letzte char in Javascript keypress Ereignis

Alles, was ich getan habe, war auf das Tastendruckereignis zu ändern, und jetzt meine Funktion lässt das letzte Zeichen des Tags beim Erstellen des Ankers. Hier ist mein Code: http://jsfiddle.net/jwoah12/CcwSt/115/.

WordStart und WordEnd scheinen korrekte Werte zu haben, aber j.toString() erzeugt das falsche Ergebnis.

Danke,
Jared

Antwort

1

Versuchen Sie Folgendes:

Auf Tastendruck, erhält das Zeichen eingegeben, in einer Variablen speichern. Bei der Schlüsselerstellung sehen Sie sich den Wert in der Variablen an. Wenn es die Interpunktion ist, nach der Sie suchen, führen Sie Ihre Ersatzlogik aus.

+0

Danke! Dies macht den Trick. Allerdings möchte ich, wenn möglich, gar nicht erst keyup verwenden müssen, denn wenn Sie zu schnell tippen, wird das keyup-Ereignis manchmal übersehen. – Jared