Get Character-Wert von KeyCode in JavaScript ... dann trimmen
Dies ist, was ich jetzt habe:
$("input").bind("keydown",function(e){
var value = this.value + String.fromCharCode(e.keyCode);
}
Wenn die e.keyCode
kann nicht in ein ASCII-Zeichen (AltbackspacedelPfeileetc.)...
Ich würde jetzt müssen trim
diese Werte aus value
irgendwie (vorzugsweise programmgesteuert - nicht mit lookup-Tabellen).
Ich bin mit jQuery.
Ich muss die keydown
Veranstaltung. keyPress
nicht aktivieren für bestimmte Tasten, die ich brauche, um zu erfassen (Escdelbackspaceetc.).
Kann ich nicht verwenden setTimeout
um den input-Wert. setTimeout(function(){},0)
ist zu langsam.
InformationsquelleAutor der Frage David Murdoch | 2009-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vielleicht nicht verstehe die Frage richtig, aber können Sie nicht verwenden
keyup
wenn Sie möchten, erfassen Sie sowohl Eingänge?InformationsquelleAutor der Antwort David
Meiner Erfahrung
String.fromCharCode(e.keyCode)
ist unzuverlässig.String.fromCharCode
erwartet unicode charcodes als argument;e.keyCode
gibt javascript keycodes. Javascript keycodes und unicode-charcodes sind nicht das gleiche! Insbesondere die numberpad Schlüssel zurückgeben eine anderekeycode
von der gewöhnlichen Anzahl Tasten (da Sie unterschiedliche Schlüssel), während die gleichekeycode
zurückgegeben wird, für beideupper
undlowercase
Buchstaben (beim drücken der gleichen Taste in beiden Fällen), obwohl Sie mit unterschiedlichencharcodes
.Zum Beispiel, die gewöhnliche Anzahl Schlüssel 1 generiert ein Ereignis, mit
keycode
49 während numberpad Taste 1 (mit Numlock) erzeugtkeycode
97. Verwendet mitString.fromCharCode
erhalten wir die folgenden:String.fromCharCode
erwartet unicode charcodes, nicht javascript keycodes. Die Taste erstellt ein Ereignis mit einerkeycode
65, independentant der Fall der Charakter erzeugen würde (es gibt auch einen Modifikator, wenn die Shift - Taste gedrückt wird, etc. in der Veranstaltung). Die Zeichen ein unicode -charcode
von 61, während das Zeichen " hat einecharcode
41 (nach, zum Beispiel, http://www.utf8-chartable.de/). Allerdings sind diesehex
Werte umwandeln in dezimal gibt uns einecharcode
65 für "A" und 97 für "a".[1] Dies ist konsistent mit dem, was wir ausString.fromCharCode
für diese Werte.Meine eigene Anforderung beschränkte sich auf die Verarbeitung von zahlen und normale Buchstaben (annehmen oder ablehnen, abhängig von der position im string) und lassen steuerzeichen (F-Tasten, Strg-etwas) durch. So kann ich überprüfen, für die steuerzeichen, wenn es nicht ein steuerzeichen überprüfe ich vor einer Reihe und nur dann benötige ich, um die tatsächlichen Zeichen. Gegeben habe ich bin nicht besorgt über den Fall (ich habe alle Buchstaben in Großbuchstaben ändern sowieso) und schon beschränkt sich der Bereich der Tasten, ich habe nur sorgen über den numberpad Tasten. Das folgende genügt:
Mehr im Allgemeinen, eine Funktion, die zuverlässig die Rückkehr der Charakter von einem
charcode
wäre toll (vielleicht als ein jQuery-plugin), aber ich habe keine Zeit, es zu schreiben, gerade jetzt. Sorry.Ich würde auch erwähnen
e.which
(wenn Sie mit jQuery) das normalisierte.keyCode
unde.charCode
so dass Sie nicht brauchen, zu kümmern, welche Art von Schlüssel gedrückt wurde. Das problem mit Kombination mitString.fromCharCode
bleibt.[1] ich war verwirrt für eine Weile. alle die docs sagen, dass
String.fromCharCode
erwartet eine unicode -charcode
während in der Praxis es schien zu funktionieren für ASCII-charcodes, aber das war, ich denke, aufgrund der Notwendigkeit zum konvertieren in dezimal, von hex, kombiniert mit der Tatsache, dass ASCII-charcodes und unicode dezimal charcodes überschneiden sich für die gewöhnliche lateinische Buchstaben.InformationsquelleAutor der Antwort Adam
Ich ' m vorausgesetzt, dies ist für ein Spiel oder für eine schnell reagierende Art der Anwendung ist daher die Verwendung von KEYDOWN als TASTENDRUCK.
Bearbeiten:
Dang! Ich stehe korrigiert (danke Crescent Frische und David): JQuery (oder sogar eher die zugrunde liegende DOM-hosts) machen nicht aussetzen, die Einzelheiten der WM_KEYDOWN und anderer Veranstaltungen. Sondern Sie pre-digest dieser Daten und, im Fall von keyDown-auch in JQuery, erhalten wir:
Beachten Sie, dass diese Eigenschaften sind in der UniCode-Werte.
Beachten Sie, ich war nicht in der Lage zu finden, eine authorititative Referenz in JQuery docs, aber viele seriöse Beispiele im Netz beziehen sich auf diese beiden Eigenschaften.
Den folgenden code, angepasst von einigen java (nicht javascript) von mir, ist also völlig falsch...
Folgenden wird Ihnen die "interessanten" Teile der keycode:
InformationsquelleAutor der Antwort mjv
In Reaktion auf dieses problem, ich schrieb gerade ein jQuery-plugin: https://github.com/bpeacock/key-to-charCode/
Es ist ein bisschen nach unten und schmutzig und könnte besser sein, integriert in jQuery, aber es ist ein Anfang.
InformationsquelleAutor der Antwort Brian Peacock
Ich weiß, das ist eine alte Frage, aber ich stieß heute auf der Suche nach einem pre-packaged Lösung für dieses problem, und nichts gefunden, was wirklich erfüllt meine Bedürfnisse.
Hier ist eine Lösung (nur auf Englisch), die ordnungsgemäß unterstützt Großbuchstaben (verschoben), Kleinbuchstaben, Satzzeichen, Anzahl Tastatur, etc.
Es auch ermöglicht, einfach und straight-forward-Identifikation von und Reaktion auf - nicht druckbare Tasten, wie ESC, Pfeile, Funktionstasten, usw.
https://jsfiddle.net/5hhu896g/1/
Dank DaveAlger für spart mir einiges an Tipparbeit und viel Entdeckung! - indem Sie die " Key-Array.
InformationsquelleAutor der Antwort BRebey
Ich schrieb vor kurzem ein Modul namens keysight , übersetzt
keypress
keydown
undkeyup
Veranstaltungen in Zeichen und Tasten, beziehungsweise.Beispiel:
InformationsquelleAutor der Antwort B T
Finden Sie mit diesem link
Get Keycode aus-Taste drücken und der char Wert für einen Schlüssel-code
InformationsquelleAutor der Antwort user2269057