2016-07-27 3 views
1

Wenn ich Pfeil nach links drücken event.KeyCode gibt mir 37.wollen Leftarrow nur Pfeil nach rechts und Zahlen

Wenn ich% Symbol drücken event.which gibt mir 37.

Was in dieser Situation zu tun, ich möchte nur erlauben, linker Pfeil.

$('.cla').keypress(function(event) { 
    var key = event.Which || event.keyCode 
    if ((key >= 48 && key <= 57) || (key == 37)) { 
     return true; 
    } else return false; 
}); 
+0

Warum rollen Sie zurück? Ich habe deinen Beitrag verbessert! – nicael

+0

tue das Ding, was dazu führt, meine Frage zu beantworten, ich bin nicht sying mein Code funktioniert nicht Bitte seien Sie auf dem richtigen Weg –

+1

Das ist genau das, was ich tue. Ich habe Ihre Frage so bearbeitet, dass sie leichter zu lesen ist. – nicael

Antwort

3

Um% zu drücken, müssen Sie auch die Umschalttaste rechts drücken?

Wenn also die Shift-Taste gedrückt wird, sollte es mit dem% -Zeichen übereinstimmen, ansonsten mit dem Pfeil nach links. Sie können überprüfen, ob die Shift-Taste mit event.shiftKey

1

keyPress enthält keine Pfeiltasten gedrückt wird - Geige Bestätigung: https://jsfiddle.net/12a25f46/

keyPressevent.which gibt den ASCII-Zeichencode, der der Schlüssel erzeugt (zB Shift + A = 65) - was für Pfeiltasten keinen Sinn macht, da sie kein Zeichen generieren. So sind die Pfeiltasten in keyPress nicht enthalten.

keyUp/keyDownevent.which zeigt den keyCode der gedrückten Taste und enthält Pfeile und ob shift (etc) gedrückt wurde.


So Überprüfung nur keyPress können Sie für Zahlen und% überprüfen und erlauben auch den Cursor mit den Pfeiltasten verschoben werden.

Getrennt Überprüfung für keyUp (oder keyDown) ermöglicht es Ihnen, eine beliebige Taste zu überprüfen, aber es wird nicht die gleichen Zahlen (zB% 53 + shift, nicht 37)

So gibt es keinen Konflikt.


Update: nach this question (das ist etwas ähnlich ...) könnte dies ein Problem in sein IE10. Geige oben getestet in Chrom und IE11, nicht IE10.

Ein anderer valid answer der zeigt keypress funktioniert möglicherweise in einigen Browsern falsch.

Verwandte Themen