jQuery 前的按鍵判斷代碼
更新時間:2010年03月19日 11:39:32 作者:
剛看到個問題,如何得知同時按下了哪幾個鍵以及按鍵順序(難道是格斗游戲的組合鍵?),其實(shí)jQuery實(shí)現(xiàn)起來是很簡單的。
做web開發(fā)的時候,有時候需要根據(jù)鍵盤進(jìn)行一些操作,例如按下Enter的時候提交表單,禁止用戶輸入某些特殊字符,設(shè)置快捷鍵等等。這時候需要找出用戶按下的是那些按鍵,寫個小程序來測試按鍵。
$(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時,把keyCode push到數(shù)組里,并刪除重復(fù)元素;觸發(fā)up時,用$.grep從數(shù)組中刪除該keyCode。
在任意時刻,這個數(shù)組里都保存了當(dāng)前所按的按鍵,并且順序是根據(jù)按鍵順序排列的。
用jQuery判斷當(dāng)前所按的按鍵
方法就是用一個外部的數(shù)組保存當(dāng)前按鍵。
在觸發(fā)keydown時,把keyCode push到數(shù)組里,并刪除重復(fù)元素;觸發(fā)keyup時,用$.grep從數(shù)組中刪除該keyCode。
實(shí)現(xiàn)代碼如下:
當(dāng)前按鍵:<span id="msg"></span>
<script type="text/javascript">
Array.prototype.unique = function () { //這個是刪除重復(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時,把keyCode push到數(shù)組里,并刪除重復(fù)元素;觸發(fā)up時,用$.grep從數(shù)組中刪除該keyCode。
在任意時刻,這個數(shù)組里都保存了當(dāng)前所按的按鍵,并且順序是根據(jù)按鍵順序排列的。
用jQuery判斷當(dāng)前所按的按鍵
方法就是用一個外部的數(shù)組保存當(dāng)前按鍵。
在觸發(fā)keydown時,把keyCode push到數(shù)組里,并刪除重復(fù)元素;觸發(fā)keyup時,用$.grep從數(shù)組中刪除該keyCode。
實(shí)現(xiàn)代碼如下:
復(fù)制代碼 代碼如下:
當(dāng)前按鍵:<span id="msg"></span>
<script type="text/javascript">
Array.prototype.unique = function () { //這個是刪除重復(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)頁上的界面元素,下面與大家分享下如何利用jQuery插件leanModal建立一個常規(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)核中一個非常重要的函數(shù),許多jQuery內(nèi)部函數(shù)中都頻繁用到它,掌握這個函數(shù),有利于理解jQuery的運(yùn)行原理,需要的朋友可以參考下2015-02-02jquery使用animate方法實(shí)現(xiàn)控制元素移動
這篇文章主要介紹了jquery使用animate方法實(shí)現(xiàn)控制元素移動,涉及jQuery中animate方法的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03JQuery日歷插件My97DatePicker日期范圍限制
這篇文章主要介紹了JQuery日歷插件My97DatePicker日期范圍限制的相關(guān)資料,需要的朋友可以參考下2016-01-01jQuery中document與window以及l(fā)oad與ready 區(qū)別詳解
這篇文章主要介紹了jQuery中document與window以及l(fā)oad與ready 區(qū)別詳解,需要的朋友可以參考下2014-12-12