2009-12-13 6 views
13

ok, ich brauche meinen Code zu überprüfen, ob minus/subtrahieren/- gedrückt wurde, wenn es gedrückt wurde möchte ich eine Alarmbox zu Pop. Ich versuchte mit 109 und 189 Schlüsselcodes, aber ich bekomme immer noch nicht das gewünschte Ergebnis. obwohl ich "-" drücken bekomme ich nicht, dass WarnfeldJavaScript subtrahieren (-) Schlüsselcode

Antwort

26

Die JavaScript charCodes, die Sie während eines Tastendruckereignis zu testen, sind ASCII. 109 ist die korrekte keyCode, wenn in einem Keydown oder Keyup-Ereignis verwendet.

"-" hat eine charCode von 45.

+1

danke, wo finde ich eine komplette liste der JavaScript keycodes? Ich fand ein oder zwei, aber dort fand ich "-" als 109 und 189 – kmunky

+2

http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes.aspx – Matt

+0

ok, ich finde einen guten: P http://forums.dearticles.com/javascript-development-22/very-helpful-key-codes-list-72985.html – kmunky

5

Beitrag einige Code. Dies funktioniert für mich:

document.onkeydown = function (e) { 
    if (e.keyCode === 109 || e.keyCode === 189) { 
     alert('minus sign pressed'); 
    } 
}; 

Liste von Tastencodes hier: http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes.aspx

+0

Tun Sie dies nicht im "keydown" -Ereignis. Siehe meine Antwort. –

+1

189 ist nicht das Minuszeichen für alle Tastaturlayouts. –

+0

In der Beispielseite ist das Tastaturlayout Englisch. Das ist nicht überall der Fall. – kernel

3

Ich hoffe, Dies funktioniert für Sie, es erkennt Benutzer vor ssed keys und wenn Sie nach dem Alarm suchen, können Sie den tatsächlichen Schlüssel als einen anderen Schlüssel ändern.

function detectSubstract(e) 
{ 
var evtobj=window.event? event : e //distinguish between IE's explicit event object (window.event) and Firefox's implicit. 
var unicode=evtobj.charCode? evtobj.charCode : evtobj.keyCode 
var actualkey=String.fromCharCode(unicode) 

    if (actualkey=="-") 
    { 
     alert('You pressed the minus key') 
    } 
} 
document.onkeypress=detectSubstract 
6

Tun Sie dies nicht in einem keydown Event-Handler - Sie selbst von verschiedenen Browsern Ideen über Tastencodes und mögliche Unterschiede zwischen dem Tastencodes für verschiedene Tastaturtypen auf Gedeih und Verderb setzen. Tun Sie es in einem keypress Ereignis und dann können Sie stattdessen den Zeichencode erhalten, was Sie eigentlich wollen.

document.onkeypress = function(evt) { 
    evt = evt || window.event; 
    var charCode = evt.which || evt.keyCode; 
    var charStr = String.fromCharCode(charCode); 
    if (charStr == "-") { 
     alert("Minus!"); 
    } 
}; 

die alle Informationen, die Sie jemals über JavaScript Schlüsselereignisse braucht: http://unixpapa.com/js/key.html

+0

Eigentlich ist 'keydown' eine bessere Antwort als' keypress'. Wenn Sie sich die Kompatibilitätsliste ansehen (http://www.quirksmode.org/js/keys.html), hat 'keypress' in einigen älteren Versionen von Firefox nicht funktioniert. – Mottie

+0

@fudgey: Ich denke, Sie lesen diese Kompatibilitätstabellen falsch . Die 'charCode'- und' which'-Eigenschaften des 'keypress'-Ereignisses haben in Firefox seit dem ersten Ausprobieren erfreulicherweise Zeichencodes korrekt gemeldet, was meiner Meinung nach vor 1.0 war. Was Sie möglicherweise aus diesen Tabellen herausholen, ist, dass Firefox immer 0 für die Eigenschaft 'keyCode' von' keypress'-Ereignissen meldet, was hier wirklich kein Problem ist. –

+0

@TimDown Danke. Chrome arbeitete mit onkeydown und den Tastencodes 109 und 189, Firefox jedoch nicht. Nach dem Wechsel zur Onkeypress und zu der von Ihnen beschriebenen Methode funktioniert die Erkennung von "-" überall gut. –

5

1.event.keyCode = 109 '-' Numpad

2.event.keyCode = 189 ist -‘in alphabate keybord Taste auf Chrom

3.event.keyCode = 173 ist '-' in alphabate keybord Taste auf firefox & auf Chrom 173 keycord ist Mute on | Off

+0

Ich schätze Ihre Einsicht, wie Firefox 'keyCode 189' handhabt. Es scheint mir albern, dass es für solche Sachen keine Standards gibt. 'keyCode 189' ist ein' -' in jedem Browser, den ich mit Ausnahme von Firefox teste. Erinnert mich daran, dass IE gerne ein Browser-Vorreiter ist, ungeachtet der Inkompatibilitätsprobleme, die sich aus dem wilden Schleppen der Machete ergeben. Danke nochmal für deine Hilfe. – Landslyde