2009-12-13 27 views
13

ok, tôi cần mã của tôi để kiểm tra xem trừ/trừ/- đã được nhấn, nếu nó được nhấn tôi muốn một hộp cảnh báo để bật. tôi đã thử với cả mã khóa 109189 nhưng tôi vẫn không nhận được kết quả mong muốn. mặc dù tôi bấm "-" tôi không nhận được rằng hộp cảnh báojavascript trừ (-) mã khóa

Trả lời

26

JavaScript charCodes, mà bạn đã sử dụng trong một sự kiện phím nhấn, là ASCII. 109 là mã khóa chính xác, nếu được sử dụng trong sự kiện keydown hoặc keyup.

"-" có một charCode 45.

+1

cảm ơn, nơi tôi có thể tìm thấy một danh sách đầy đủ của các mã phím javascript? tôi tìm thấy một hoặc hai nhưng tôi thấy "-" là 109 và 189 – kmunky

+2

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

+0

ok, tôi có một cái tốt: P http://forums.devarticles.com/javascript-development-22/very-helpful-key-codes-list-72985.html – kmunky

5

bài viết một số mã. Này làm việc cho tôi:

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

danh sách đầy đủ các mã chủ chốt ở đây: http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes.aspx

+0

Không thực hiện việc này trong sự kiện 'phím tắt '. Xem câu trả lời của tôi. –

+1

189 không phải là dấu trừ cho tất cả bố cục bàn phím. –

+0

Trong trang mẫu, bố cục bàn phím là tiếng Anh. Đó không phải là trường hợp ở khắp mọi nơi. – kernel

3

Tôi hy vọng điều này phù hợp với bạn, Nó phát hiện người dùng trước phím ssed và nếu đó là một trong những bạn đang tìm kiếm nó sẽ hiển thị cảnh báo, bạn có thể thay đổi phím thực tế để được bất kỳ phím khác.

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

Đừng làm điều này trong một xử lý sự kiện keydown - bạn đặt mình vào lòng thương xót của những ý tưởng trình duyệt khác nhau về các mã chủ chốt và biến thể tiềm năng giữa các mã chủ chốt đối với các loại bàn phím khác nhau. Làm điều đó trong một sự kiện keypress và sau đó bạn có thể nhận được mã ký tự thay vào đó, đó là những gì bạn thực sự muốn.

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

Tất cả các thông tin bạn đã bao giờ có thể cần khoảng Javascript sự kiện chính: http://unixpapa.com/js/key.html

+0

Thực ra 'keydown' là câu trả lời hay hơn' nhấn phím '. Nếu bạn nhìn vào danh sách tương thích (http://www.quirksmode.org/js/keys.html) 'nhấn phím 'không hoạt động trong một số phiên bản cũ của Firefox – Mottie

+0

@fudgey: Tôi nghĩ bạn đang hiểu sai các bảng tương thích đó . Các thuộc tính 'charCode' và' which' của sự kiện 'keypress' đã vui vẻ báo cáo các mã ký tự chính xác trong Firefox kể từ lần đầu tiên tôi thử nó, mà tôi nghĩ là trước 1.0. Những gì bạn có thể chọn ra từ các bảng đó là Firefox luôn báo cáo 0 cho thuộc tính 'keyCode' của các sự kiện' nhấn phím ', đây thực sự không phải là vấn đề ở đây. –

+0

@TimDown Cảm ơn bạn. Chrome đã làm việc với onkeydown và các mã chính 109 và 189 nhưng Firefox thì không. Sau khi chuyển sang onkeypress và phương pháp bạn mô tả, phát hiện '-' hoạt động tốt ở mọi nơi. –

5

1.event.keyCode = 109 là '-' trên numpad

2.event.keyCode = 189 là -' trong alphabate chính Bàn phím trên chrome

3.event.keyCode = 173 là '-' trong alphabate chính Bàn phím trên firefox & trên chrome 173 keycord là Mute On | Tắt

+0

Tôi đánh giá cao sự hiểu biết của bạn về cách Firefox xử lý 'mã khóa 189'. Có vẻ ngớ ngẩn với tôi rằng không có tiêu chuẩn đặt ra cho những thứ như thế này. 'Mã khóa 189' là một' -' trên mọi trình duyệt mà tôi thử nghiệm trừ Firefox. Nhắc tôi về cách IE thích trở thành một trình duyệt của trình duyệt, bất kể các vấn đề không tương thích phát sinh từ sự trượt tuyết hoang dã của họ. Cảm ơn một lần nữa vì sự giúp đỡ của bạn. – Landslyde