Álv*_*lez 5 javascript keyboard jquery
我需要检测用户是否按下了数字小键盘中的点键。我写了这个对我有用的初稿:
<!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>
Run Code Online (Sandbox Code Playgroud)
但是,我只能在带有西班牙语键盘的 Windows XP 盒子中对其进行测试。我的问题是:
从中读取是否安全e.which?我使用它,因为两者e.keyCode并e.charCode返回undefined在至少一个浏览器。
操作系统是否以某种方式影响这些数字代码,或者它只是浏览器的东西?
这些代码是否取决于键盘布局?
背景信息:我找不到一个 jQuery 插件来重新映射数字键盘,所以我正在编写自己的。
我会解释我的确切需求。带有数字小键盘的西班牙语键盘有一个.键。但是,西班牙语中的小数点分隔符是,. 这使得在 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>
Run Code Online (Sandbox Code Playgroud)
键入.数字小键盘中的键(或键盘布局中替换它的任何键)以及与字母小键盘中相同字符对应的键。目标是检测您点击了第一个而不是第二个。
| 归档时间: |
|
| 查看次数: |
12959 次 |
| 最近记录: |