Trigger-ein-Tastendruck-mit jQuery...und angeben, welche Taste gedrückt wurde
Ich würde gerne eine Eingabe-element (type=text) oder textarea-element, das überprüft, dynamisch durch das auslösen bestimmter Tastatureingaben. Diese wird verwendet für die chinesischen pinyin Eingang, so zum Beispiel:
Den Benutzer-Typen "ma2" in ein input-element. Das keydown-Ereignis löst bei jedem Tastendruck, und die 2 nie angezeigt. Stattdessen, wenn der Benutzer drückt "2" "a" erhalten ein Ton daneben, wie hier: "á". Am Ende, den der Benutzer eingegeben hat: "má".
Dies kann erreicht werden durch Lesen und ändern der gesamten input-Wert mit $(element).val() jedoch, wenn ein input-element den Fokus hat und die es Wert ist sich durch den Aufruf .val("etwas"), bewegt sich der cursor an das Ende des Textes. Dies funktioniert gut in den meisten Situationen, weil ein Benutzer nur weiterhin die Eingabe am Ende des Feldes, aber ich möchte diese Arbeit in alle Situationen.
...eine andere Lösung für dieses problem wäre die zu bekommen/setzt die Position der cursor in einem input-oder textarea-element. Ich glaube nicht, dass dies möglich ist, in javascript, aber.
So, Remy auf dem richtigen Weg war sicher. Auslösung Tastendrücke nicht erlauben würde, mich zur Eingabe von Sonderzeichen, ohne viel Aufwand sowieso. Stattdessen Fang ich das keydown-Ereignis und setzen Sie den Wert des input - /textarea-Komponente und anschließend verschieben der Einfügemarke.
Ich habe nicht gefunden was gut für das caret-Zeichen zu setzen in jQuery, aber das folgende wirklich brach, dass problem für mich. Ich werde einen link zu meinem letzten pinyin input-code, wenn es stabil. Es ist ziemlich nah jetzt.
http://blog.vishalon.net/Post/57.aspx
http://demo.vishalon.net/getset.htm
InformationsquelleAutor user27948 | 2008-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht viel Glück auslösen-Tastendruck - ich bin ziemlich sicher, dass, wenn der Tastendruck ist vertrauenswürdig (D. H. stammt aus dem browser), wird Sie nicht abgeholt werden.
Jedoch, die Sie tun können, ersetzen von text und legen Sie die Karat zurück, wo es war - anstatt zu Schießen, es an das Ende der Zeichenfolge. Sie benötigen setSelectionRange und createTextRange (für den IE).
Ich habe zusammen eine kleine demo - der Ersatz, die Sie sehen werden, entsprechen nicht der richtige Worte, aber es zeigt, wie es funktioniert:
http://jsbin.com/emudi/ (zum Bearbeiten der Quell -http://jsbin.com/emudi/edit)
Der trick ist, zu beachten, wo das Karat ist, ersetzen Sie das Gefundene Wort mit substr (anstatt regex zu vermeiden, ersetzen Sie die falschen Spiele) und dann die re-Platzierung der carat-am Ende des neuen Wortes.
Den Austausch ausgelöst wird, auf den Raum drücken oder Unschärfe den Weg. Ein Hinweis auf diese - man könnte trigger-Ersatz auf ein bestimmtes Zeichen (d.h. '2') - aber ich würde nicht empfehlen, die Suche nach Ersatz auf jeder Tastendruck.
InformationsquelleAutor Remy Sharp
Auch für einfache code-controlling die "caret-Zeichen" in einem cross-browser Weg, das nützlich sein könnte:
http://javascript.nwbox.com/cursor_position/
etwas spät mit der Antwort, aber ich bin sicher, Sie werden immer noch diese alten Sachen nützlich.
InformationsquelleAutor Diego Perini