2012-08-08 10 views
6

Ich versuche alle anderen Zeichen von der Eingabe in die Texteingabe zu deaktivieren.

Da die $ Sie drücken müssen, um die Verschiebung -Taste und die -Taste zu erhalten. Ich bin mir nicht sicher, wie Sie den Schlüsselcode für so etwas bekommen würden?

+0

Mögliche Duplikat [Was sind die JavaScript KeyCodes?] (Http://stackoverflow.com/questions/5603195/what-are-the-javascript-keycodes) –

Antwort

5

Key Codes beziehen sich nur auf Tasten. $ ist ein Charakter, erreicht durch zwei Tasten, Shift und 4. Es gibt keinen Tastencode ist explizit für $ wenn onkeydown

bearbeiten mit: Es wurde von Edward weist darauf hin, dass onkeypress Tastenkombinationen verwendet, und hat keycode ist für Kombinationen. Lerne jeden Tag etwas Neues :)

Here's some code, bearbeitet von dem onkeydown Beispiel, das von der MDN bereitgestellt wird, um Keypress-Tastencodes zu erkennen.

Here's the fiddle aktualisiert, um Firefox-freundlich zu sein, mit Hilfe von this S.O. post. Die JQuery-Lösung funktioniert auch, wenn Sie so vorgehen.

+0

Die Geige von Ihrer Bearbeitung gibt dieses Ergebnis in firefox12: 'keyCode für die Taste gedrückt: 0' (on jede Taste drücke ich ..) – GitaarLAB

+0

@GitaarLAB Wie seltsam. Funktioniert in IE und Chrome. Ich kann mir nicht vorstellen, dass Firefox "onkeypress" nicht unterstützen würde, obwohl das Tauschen für "onkeydown" in Firefox funktioniert. –

+0

Auschecken [dieses S.O. Thread für Informationen über onkeypress in Firefox] (http://stackoverflow.com/questions/4496910/onkeypress-event-not-working-in-firefox) Zweifel, es ist der einzige zu –

2

DONT Dann auf diese Weise verwenden, Ihr Problem zu lösen: da man nicht vorhersagen kann, dass jedes Tastatur-Layout immer -sign als Verschiebung eingegeben $ hat + 4.
Sie können immer noch Keycode 4, und überprüfen Sie, ob Shift gedrückt wurde, aber Sie können nicht sicher sein, dass !!

So wäre es besser, einfach alle ungültigen Zeichen in Ihren Feldern zu ersetzen (bevor Sie die Daten übermitteln). Denken Sie: str.replace()
Sie auch für den Satz mit ungültigen Zeichen auf dem onkeyup Ereignis des Eingangs-Box überprüfen könnten, effektiv alle ungültigen Zeichen zu ersetzen, wie Sie schreiben!
Like: onkeyup="this.value.replace(/[your illegal characters]/gi, '')"
das tun sollten, was Sie wollen.

Bitte beachten Sie: Sie vertrauen nie Browser-Eingabe sollte, und noch diese Eingabe in Ihrem Empfangs Skript filtern soll !!!

Viel Glück !!

5

Es gibt keine onkeydown Tastenkode, wie zuvor gesagt, durch ngmiceli

Obwohl onkeypress Schlüsselcode vorhanden ist, und ist gleich 36.

JavaScript Event KeyCode Test Page

+0

+1 Danke dafür! –

1

Es gibt keinen Schlüsselcode für $, da es kein gültiger Schlüssel ist - es hat über eine Art Schieber zugegriffen werden.

Normalerweise würden Sie eine Überprüfung durchführen, um zu sehen, ob der Shifter aktiv war, und das Ereignis keypress auf dem relevanten Schlüssel abhören.So etwas wie dies für eine QWERTY-Layout in Ihrer Instanz:

var shiftPressed = false; 

$(window).keydown(function(e) { 
    if(e.which == 16) { shiftPressed = true; } 
    if(e.which == 52 && shiftPressed) 
    { 
     // Do whatever here... 
    } 
}); 

$(window).keyup(function(e) { 
    if(e.which == 16) { shiftPressed = false; } 
}); 
0

onkeypress - Der Code Unicode-Zeichen ist: 36

onkeydown - Der Unicode-KEY-Code ist: 52

Verwandte Themen