jQuery 前的按鍵判斷代碼
更新時(shí)間:2010年03月19日 11:39:32 作者:
剛看到個(gè)問(wèn)題,如何得知同時(shí)按下了哪幾個(gè)鍵以及按鍵順序(難道是格斗游戲的組合鍵?),其實(shí)jQuery實(shí)現(xiàn)起來(lái)是很簡(jiǎn)單的。
做web開發(fā)的時(shí)候,有時(shí)候需要根據(jù)鍵盤進(jìn)行一些操作,例如按下Enter的時(shí)候提交表單,禁止用戶輸入某些特殊字符,設(shè)置快捷鍵等等。這時(shí)候需要找出用戶按下的是那些按鍵,寫個(gè)小程序來(lái)測(cè)試按鍵。
$(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) + " ");
});
});
方法是觸發(fā)down時(shí),把keyCode push到數(shù)組里,并刪除重復(fù)元素;觸發(fā)up時(shí),用$.grep從數(shù)組中刪除該keyCode。
在任意時(shí)刻,這個(gè)數(shù)組里都保存了當(dāng)前所按的按鍵,并且順序是根據(jù)按鍵順序排列的。
用jQuery判斷當(dāng)前所按的按鍵
方法就是用一個(gè)外部的數(shù)組保存當(dāng)前按鍵。
在觸發(fā)keydown時(shí),把keyCode push到數(shù)組里,并刪除重復(fù)元素;觸發(fā)keyup時(shí),用$.grep從數(shù)組中刪除該keyCode。
實(shí)現(xiàn)代碼如下:
當(dāng)前按鍵:<span id="msg"></span>
<script type="text/javascript">
Array.prototype.unique = function () { //這個(gè)是刪除重復(fù)元素用的,可惜$.unique只能處理DOM數(shù)組。
var o = {};
for (var i = 0, j = 0; i < this.length; ++i) {
if (o[this[i]] === undefined) {
o[this[i]] = j++;
}
}
this.length = 0;
for (var key in o) {
this[o[key]] = key;
}
return this;
};
var $msg = $('#msg');
var keys = [];
$(document).keydown(function(event){
keys.push(event.keyCode);
keys.unique();
$msg.html(keys.join(' '));
}).keyup(function(event){
keys.push(event.keyCode);
keys = $.grep(keys, function (n) {return n != event.keyCode;});
$msg.html(keys.join(' '));
});
</script>
復(fù)制代碼 代碼如下:
$(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) + " ");
});
});
方法是觸發(fā)down時(shí),把keyCode push到數(shù)組里,并刪除重復(fù)元素;觸發(fā)up時(shí),用$.grep從數(shù)組中刪除該keyCode。
在任意時(shí)刻,這個(gè)數(shù)組里都保存了當(dāng)前所按的按鍵,并且順序是根據(jù)按鍵順序排列的。
用jQuery判斷當(dāng)前所按的按鍵
方法就是用一個(gè)外部的數(shù)組保存當(dāng)前按鍵。
在觸發(fā)keydown時(shí),把keyCode push到數(shù)組里,并刪除重復(fù)元素;觸發(fā)keyup時(shí),用$.grep從數(shù)組中刪除該keyCode。
實(shí)現(xiàn)代碼如下:
復(fù)制代碼 代碼如下:
當(dāng)前按鍵:<span id="msg"></span>
<script type="text/javascript">
Array.prototype.unique = function () { //這個(gè)是刪除重復(fù)元素用的,可惜$.unique只能處理DOM數(shù)組。
var o = {};
for (var i = 0, j = 0; i < this.length; ++i) {
if (o[this[i]] === undefined) {
o[this[i]] = j++;
}
}
this.length = 0;
for (var key in o) {
this[o[key]] = key;
}
return this;
};
var $msg = $('#msg');
var keys = [];
$(document).keydown(function(event){
keys.push(event.keyCode);
keys.unique();
$msg.html(keys.join(' '));
}).keyup(function(event){
keys.push(event.keyCode);
keys = $.grep(keys, function (n) {return n != event.keyCode;});
$msg.html(keys.join(' '));
});
</script>
相關(guān)文章
使用jQuery插件創(chuàng)建常規(guī)模態(tài)窗口登陸效果
隱藏模態(tài)窗口技術(shù)是一種很好的解決方案,用于處理不是特有必要出現(xiàn)在網(wǎng)頁(yè)上的界面元素,下面與大家分享下如何利用jQuery插件leanModal建立一個(gè)常規(guī)模態(tài)窗口2013-08-08jQuery中的pushStack實(shí)現(xiàn)原理和應(yīng)用實(shí)例
這篇文章主要介紹了jQuery中的pushStack實(shí)現(xiàn)原理和應(yīng)用實(shí)例,pushStack是jQuery內(nèi)核中一個(gè)非常重要的函數(shù),許多jQuery內(nèi)部函數(shù)中都頻繁用到它,掌握這個(gè)函數(shù),有利于理解jQuery的運(yùn)行原理,需要的朋友可以參考下2015-02-02jQuery發(fā)送Ajax請(qǐng)求的幾種方法舉例
Ajax一個(gè)向后端發(fā)送請(qǐng)求的方式,下面這篇文章主要給大家介紹了關(guān)于jQuery發(fā)送Ajax請(qǐng)求的幾種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用jQuery具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-06-06jquery使用animate方法實(shí)現(xiàn)控制元素移動(dòng)
這篇文章主要介紹了jquery使用animate方法實(shí)現(xiàn)控制元素移動(dòng),涉及jQuery中animate方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03JQuery日歷插件My97DatePicker日期范圍限制
這篇文章主要介紹了JQuery日歷插件My97DatePicker日期范圍限制的相關(guān)資料,需要的朋友可以參考下2016-01-01jQuery動(dòng)態(tài)生成Bootstrap表格
這篇文章主要介紹了jQuery動(dòng)態(tài)生成bootstrap表格的相關(guān)資料,非常不錯(cuò)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11jQuery中document與window以及l(fā)oad與ready 區(qū)別詳解
這篇文章主要介紹了jQuery中document與window以及l(fā)oad與ready 區(qū)別詳解,需要的朋友可以參考下2014-12-12