2011-12-19 25 views
10

Web uygulamasındaki yakınlaştırma ve uzaklaştırma işlevlerini tetiklemek için artı ve eksi tuşlarını kullanmak istiyorum. Aşağıdaki kod çoğunlukla çalışır:Javascript'te artı/eşittir ve eşittir tuşları nasıl ayırt edilir?

$(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; 
    } 
}); 

=/+ tuşuna yanı sıra tuş takımını + tuşuna basıldığında iade anahtar kodu 187. Bu iyi, tek ise, ancak 187 de keypad = key den döndürülüyor. Bu da yakınlaştırma için kullanmak istemiyorum. +/=, = Ve and tuşlarını nasıl ayırt edebilirim?

+2

"Anahtar" yerine "tuşa basma" kullanabilirsiniz, çünkü yalnızca anahtar kodu yerine tam olarak çevrilmiş karakteri alırsınız. – Pointy

+0

'Ctrl' +' + 'zaten bunu tarayıcıda yapıyor –

+0

Tuş veya tuşla (tuşa kıyasla) kullanıyorsanız, =/+ ve tuş takımı + tuşlarının _different_ kodlarını almanız gerekir. Vardiya tutup tutmadığına bakılmaksızın =/+ için kod. Burada test edilen klavyemle farklı kodlar alıyorum: http://www.webonweboff.com/tips/js/event_key_codes.aspx#instant-test (Tuş takımımın bir tuşu yok, bu yüzden klavyelerimiz farklı olmalı .) – nnnnnn

cevap

9

shiftKey özelliğini kullanın. e.shiftKeytrue ise

(tahmin edeceğiniz!) Shift basılı tutuluyor ve böylece e.keyCode === 187 && e.shiftKey+ basılmış demektir.

İlgili konular