2011-12-19 1 views
10

Desidero utilizzare i tasti più e meno per attivare le funzioni di ingrandimento e riduzione nella mia app Web. Il seguente codice funziona, per lo più:Come distinguere i tasti più/uguale e uguali in javascript?

$(document).keydown(function(e) { // requires jQuery 
    console.log(e.keyCode); 
    if (e.keyCode === 189) { // minus 
     zoom_out(); 
     return false; 
    } 
    if (e.keyCode === 187) { // plus 
     zoom_in(); 
     return false; 
    } 
}); 

Il codice chiave 187 è tornato quando si preme il tasto + =/così come la tastiera + chiave. Questo va bene, se è dispari, ma anche 187 viene restituito dal tasto keypad =, che non voglio usare per lo zoom. Come posso distinguere i tasti +/=, = e +?

+2

È possibile utilizzare "keypress" anziché "keydown", perché in questo caso si ottiene il carattere completamente tradotto anziché solo il codice. – Pointy

+0

'Ctrl' +' + 'lo fa già nel browser –

+0

Se stai usando keydown o keyup (rispetto a keypress) dovresti ricevere _different_ codici per il tasto =/+ e il tasto keypad +, ma lo stesso codice per =/+ indipendentemente dal fatto che tu tenga il turno. Ricevo codici diversi con la mia tastiera come testato qui: http://www.webonweboff.com/tips/js/event_key_codes.aspx#instant-test (La mia tastiera non ha un tasto =, anche se le nostre tastiere devono essere diverse .) – nnnnnn

risposta

9

Utilizzare la proprietà shiftKey.

Se e.shiftKey è true (indovinato!) Maiusc viene tenuto premuto e così e.keyCode === 187 && e.shiftKey significa + è stato premuto.