不是那麼忍者編輯:我正在德國鍵盤上工作。當德語鍵盤蓋上蓋子時,就像按下移位按鈕一樣處理數字鍵。 IIRC這不會發生在英國/美國的鍵盤上。jQuery/HTML計算器不捕捉Capslock(德國鍵盤)
只是使用jQuery/html製作一個簡單的瀏覽器計算器,除了當Caps打開並且我的計算器開始接受垃圾作爲輸入時,它擁有一切hunky dory。以下是我的輸入驗證器。 Event.keycode不幸的是沒用。
function validInput(event) {
return event.keyCode === 13 || event.keyCode === 8 || event.keyCode === 10 //enter, backspace and return
|| event.keyCode === 67 // "C" for clear
|| (event.which >= 48 && event.which <= 57) // 0-9 **chars** over the alpha buttons
|| (event.keyCode >= 96 && event.keyCode <= 123); //numpad and fn buttons
感謝您花時間閱讀本文。下面的完整代碼,雖然我不認爲你需要它...
$(function(){
$("input.number").on("click",clickButton);
$("body").on("click", revertFocus); // frag Marc
$(document).on("keyup keydown", keyHandler)
});
function keyHandler(event) { // handles enter; clear and return keys
if (event.shiftKey || !validInput(event))
return false;
if(event.type == "keyup"){
if (event.keyCode == 13 || event.keyCode == 10) {
rechner();
}
if (event.keyCode == 67) { //clears the screen
$("#userInput").val("");
}
}else{
if (event.keyCode == 67) {
return false;
}
}
return true;
}
function rechner() {
var userInput = $("#userInput").val();
var answer = eval(userInput.replace(",","."));
$("#userInput").val(String(answer).replace(".",","));
}
function clickButton(){
var input = $(this).val();
if (input=='c'){
$("#userInput").val("");
return;
}
$("#userInput").val($("#userInput").val() + input);
}
function validInput(event) {
return event.keyCode === 13 || event.keyCode === 8 || event.keyCode === 10 //enter, backspace and return
|| event.keyCode === 67 // "C" for clear
|| (event.which >= 48 && event.which <= 57) // 0-9 over the alpha buttons
|| (event.keyCode >= 96 && event.keyCode <= 123); //numpad and fn buttons
}
function revertFocus() {
$("#userInput").focus();
}
capslock keycode是20 –
有沒有什麼原因讓你有時使用'event.wich',有時'event.keyCode'? – Johnny5
@ Johnny5 - 事件keyCode檢測到某個按鍵被按下,而event.which檢測哪個字符被打印到屏幕上。因此,keyCode不關注大寫鎖定和它的影響。 – rory