得知使用者按下按鍵代表的意思

HTML

1<div id="myform">
2Name:<input />
3Email:<input />
4</div>

jQuery(1)

1$(document).keydown(function(e){
2  //keyCode為ESC
3  if (e.keyCode == 27) {
4  $("#myform").hide("slow");
5  }
6});

我們透過document來為網頁注冊一個keydown事件,如果使用者focus在網頁上,然後由鍵盤有按下任何一個「鍵」,就可以由e.keyCode來得到一個數字,然後依這個數字,我們就可以寫對應的Code。

keyCode請參考:http://unixpapa.com/js/key.html

另外,我也能使用JavaScript中String物件的fromCharCode方法來得到文字內容,而不是數字。

JavaScript

01function keyText(e) {
02            // e.which 取得keyCode的數字
03            // String.fromCharCode將keyCode轉換成對應的文字
04            if (window.event) // IE
05            {
06                keynum = e.keyCode
07            }
08            else if (e.which) // Netscape/Firefox/Opera
09            {
10                keynum = e.which
11            }
12            alert(String.fromCharCode(keynum) + ":按鍵被按下了");
13            return true;
14        }
15 
16        document.onkeydown = keyText;

但以上JavaScript程式在IE8上會有問題,這也顯示出來一個重點,jQuery在跨Browser上的處理能力比傳統的JavaScript好上許多。如果你是資深的網頁程式開發人員就會知道這種痛,同一支程式,還要先去判斷是IE和非IE,是IE走A,不是IE走B,但有了jQuery可以大大減少這種不必要的幸苦路。

最後,我們再來修改一下jQuery程式,顯示一下我們所按下的按鍵文字(0-9,a-z能正常顯示),記得在IE及Firefox都測試看看。

jQuery(2)

1$(document).keydown(function(e) {
2  alert(String.fromCharCode(e.keyCode) + ":按鍵被按下了");
3  //27為ESC
4  if (e.keyCode == 27) {
5  $("#myform").hide("slow");
6  }
7});

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。