我需要檢測用戶是否按下了數字鍵盤上的點鍵。我寫這爲我的作品初稿:從數字鍵盤檢測十進制(點)鍵
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"><!--
(function($){
var knownCodes = [
[110, 46], // Firefox, IE, Chrome
[78, 46] // Opera
];
var pressedCodes = [null, null];
$.fn.comma = function(){
this.live("keydown", function(e){
pressedCodes = [e.which, null];
}).live("keypress", function(e){
pressedCodes[1] = e.which;
for(var i=0, len=knownCodes.length; i<len; i++){
if(pressedCodes[0]==knownCodes[i][0] && pressedCodes[1]==knownCodes[i][1]){
$("#log").append("<li>Decimal key detected</li>");
break;
}
}
});
return this;
};
$(function(){
$('<ol id="log"></ol>').appendTo("body");
});
})(jQuery);
jQuery(function($){
$(".comma input:text, .comma textarea").css("border", "1px solid black").comma();
});
//--></script>
</head>
<body>
<form action="" method="get" class="comma" size="20">
<p><input type="text"></p>
<p><textarea rows="3" cols="30"></textarea></p>
</form>
</body>
</html>
但是,我只能用西班牙語鍵盤測試它在Windows XP框。我的問題是:
安全地閱讀
e.which
?我正在使用它,因爲e.keyCode
和e.charCode
至少在一個瀏覽器中返回undefined
。操作系統是否以某種方式影響這些數字代碼,或者它只是瀏覽器的東西?
這些代碼是否依賴於鍵盤佈局?
背景信息:我無法找到一個jQuery插件remap numeric keypad所以我寫我自己。
更新
我會解釋我的確切需要。具有數字小鍵盤的西班牙語鍵盤具有.
鍵。但是,西班牙語中的小數點分隔符是,
。這使得在Web應用程序中輸入數字變得煩人。某些桌面應用程序(如MS Excel)會重新映射此密鑰,以便插入逗號。我試圖模仿這一點。
我已經改編了一個我用來在這裏發佈的腳本。這就是我得到的knownCodes陣列值:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"><!--
(function($){
$.fn.showKeyCodes = function(){
var log = function(e){
$("<li></li>").text(e.type + "(): [keyCode, charCode, which]=[" + e.keyCode + ", " + e.charCode + ", " + e.which + "]").appendTo("#log");
}
this.live("keydown", function(e){
log(e);
}).live("keypress", function(e){
log(e);
}).live("keyup", function(e){
log(e);
});
return this;
};
$(function(){
$('<ol id="log"></ol>').appendTo("body");
});
})(jQuery);
jQuery(function($){
$(".showKeyCodes input:text, .showKeyCodes textarea").css("border", "1px solid black").showKeyCodes();
});
//--></script>
</head>
<body>
<form action="" method="get" class="showKeyCodes" size="20">
<p><input type="text"></p>
<p><textarea rows="3" cols="30"></textarea></p>
</form>
</body>
</html>
輸入您的數字小鍵盤.
鍵(或其它關鍵它將替換你的鍵盤佈局),並對應於相同的字符在字母鍵盤的鍵。目標是檢測您點擊第一個而不是第二個。
附註:我希望你不需要這個鍵做的事情,因爲我的鍵盤上沒有一個數字鍵盤:) http://www.apple.com/keyboard/ – 2010-07-13 09:47:04
我希望它插入一個昏迷,這是西班牙語中的有效小數點分隔符。如果你沒有鍵盤,你沒有問題,我正在努力解決:) – 2010-07-13 10:03:18