做web开发的时候,有时候需要根据键盘进行一些操作,例如按下Enter的时候提交表单,禁止用户输入某些特殊字符,设置快捷键等等。这时候需要找出用户按下的是那些按键,写个小程序来测试按键。
$(document).ready(function(){
var $down = $("#down");
var $press = $("#press");
var $up = $("#up");
$(document).keydown(function(event){
$down.append(String.fromCharCode(event.keyCode) + " ");
if (event.ctrlKey) {
alert("ctrl");
}
}).keyup(function(event){
$up.append(String.fromCharCode(event.keyCode) + " ");
}).keypress(function(event){
$press.append(String.fromCharCode(event.keyCode) + " ");
});
});
方法是触发down时,把keyCode push到数组里,并删除重复元素;触发up时,用$.grep从数组中删除该keyCode。
在任意时刻,这个数组里都保存了当前所按的按键,并且顺序是根据按键顺序排列的。
用jQuery判断当前所按的按键
方法就是用一个外部的数组保存当前按键。
在触发keydown时,把keyCode push到数组里,并删除重复元素;触发keyup时,用$.grep从数组中删除该keyCode。
实现代码如下:
当前按键:
<script type="text/javascript"> <BR>Array.prototype.unique = function () { //这个是删除重复元素用的,可惜$.unique只能处理DOM数组。 <BR>var o = {}; <BR>for (var i = 0, j = 0; i < this.length; ++i) { <BR>if (o[this[i]] === undefined) { <BR>o[this[i]] = j++; <BR>} <BR>} <BR>this.length = 0; <BR>for (var key in o) { <BR>this[o[key]] = key; <BR>} <BR>return this; <BR>}; <BR>var $msg = $('#msg'); <BR>var keys = []; <BR>$(document).keydown(function(event){ <BR>keys.push(event.keyCode); <BR>keys.unique(); <BR>$msg.html(keys.join(' ')); <BR>}).keyup(function(event){ <BR>keys.push(event.keyCode); <BR>keys = $.grep(keys, function (n) {return n != event.keyCode;}); <BR>$msg.html(keys.join(' ')); <BR>}); <BR></script>










