2011-12-19 1 views
10

Tôi muốn sử dụng các phím dấu cộng và trừ để kích hoạt chức năng phóng to và thu nhỏ trong ứng dụng web của tôi. Mã sau hoạt động, chủ yếu là:Làm cách nào để phân biệt dấu cộng/bằng và bằng các khóa trong 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; 
    } 
}); 

Mã khóa 187 trở lại khi nhấn phím =/+ cũng như phím +. Điều này là tốt, nếu lẻ, nhưng 187 cũng được trả về từ khóa bàn phím =, mà tôi không muốn sử dụng để phóng to. Làm cách nào để phân biệt các phím +/=, = và +?

+2

Bạn có thể sử dụng "nhấn phím" thay vì "phím tắt", vì sau đó bạn sẽ nhận được ký tự được dịch hoàn toàn thay vì chỉ là mã khóa. – Pointy

+0

'Ctrl' +' + 'đã thực hiện điều này trong trình duyệt –

+0

Nếu bạn đang sử dụng phím tắt hoặc khóa (so với nhấn phím), bạn sẽ nhận được mã _different_ cho phím =/+ và phím +, nhưng giống nhau mã cho =/+ bất kể bạn có giữ phím shift hay không. Tôi nhận được các mã khác nhau với bàn phím của mình như được kiểm tra tại đây: http://www.webonweboff.com/tips/js/event_key_codes.aspx#instant-test (Bàn phím của tôi không có phím = mặc dù vậy, vì vậy bàn phím của chúng tôi phải khác nhau .) – nnnnnn

Trả lời

9

Sử dụng thuộc tính shiftKey.

Nếu e.shiftKeytrue (bạn đã đoán!) Shift đang được giữ và do đó e.keyCode === 187 && e.shiftKey có nghĩa là + được nhấn.