javascript判斷是否按回車鍵


function enterHandler(event)
{

var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
//處理函數
}
}
 
 

一、 onkeyup,onkeydown,onkeypress

  1. 在使用JavaScript做WEB鍵盤事件偵聽捕獲時,主要采用onkeypress、onkeydown、 onkeyup三個事件進行出來。該三個事件的執行順序如下:onkeydown -> onkeypress ->onkeyup。在一般情況下,采用三種鍵盤事件均可對鍵盤輸入進行有效的響應。當在實際使用中,會發現這幾者有些不同的差別。
  2. onkeypress事件不能對系統功能鍵(例如:后退、刪除等,其中對中文輸入法不能有效響應)進行正常的響應,onkeydown和onkeyup均可以對系統功能鍵進行有效的攔截,但事件截獲的位置不同,可以根據具體的情況選擇不同的鍵盤事件。
  3. 由於onkeypress不能對系統功能鍵進行捕 獲,導致window.event對象的keyCode屬性和onkeydown,onkeyup鍵盤事件中獲取的keyCode屬性不同,主要表現在 onkeypress事件的keyCode對字母的大小寫敏感,而onkeydown、onkeyup事件不敏感;onkeypress事件的 keyCode無法區分主鍵盤上的數字鍵和付鍵盤數字鍵的,而onkeydown、onkeyup的keyCode對主付鍵盤的數字鍵敏感。
  4. :在Maxthon瀏覽器中,onkeydown和onkeyup有連續響應兩次鍵盤事件的BUG,onkeydown不能正常地對F1~F12的功能鍵進行正常的截獲(onkeyup沒有發現該問題),具體原因不明。不知道以后是否會進行訂正。
  5. 鍵盤事件包括keydown、kepress和 keyup三種,每次敲擊鍵盤都會(依次?)觸發這三種事件,其中keydown和keyup是比較低級的接近於硬件的事件,通俗的理解是這兩個事件可以 捕獲到你敲擊了鍵盤中某個鍵;而keypress是相對於字符層面的較為高級點的事件,這個事件能夠捕捉到你鍵入了哪個字符。可以這樣理解,如果你敲擊了 A鍵,keydown和keyup事件只是知道你敲擊了A鍵,它並不知道你敲的是大寫的A(你同時按下了Shift鍵)還是敲的是小寫a,它是以"鍵"為單位,你敲入了大寫的A,它只是當成你敲下了shift和A兩個鍵而已,但是keypress可以捕捉到你是敲入的大寫的A還是小寫的a.
  6. 在介紹Prototype中Event對象前先介紹一下瀏覽器中的事件模型,瀏覽器中的事件主要有HTML事件、鼠標事件和鍵盤事件,前兩種事件比較好理解,這里主要解釋一下鍵盤事件以及它在IE和firefox中的區別.
  7. 還要理解一個概念是鍵盤中的鍵分為字符(可打印)鍵和功能鍵(不可打印),功能鍵包括Backspace, Enter, Escape, the arrow keys, Page Up, Page Down, and F1 through F12 等
  8. 下面說一下鍵盤事件的具體使用方法,
  9. 鍵盤事件的event對象中包含一個 keyCode屬性,IE中只有這一個屬性,當為keydown和keyup 事件是,keycode屬性表示你具體按下的鍵(也稱為virtual keycode),當捕捉的是keypress事件時keyCode屬性指的是你鍵入的字符(character code)
  10. 在firefox中情況有些不同,event對象包含一個keyCode屬性和一個charCode屬性,keydown和keyup事件的時候,keyCode表示的就是你具體按的鍵,charCode為0;當捕捉的是keypress事件時,keyCode為0,charCode指的是你按下的字符
  11. 當捕捉的是keypress事件時,當你按的是可打印字符時,keyCode為0,charCode指的是你按下的字符的鍵值,當你按的是不可打印字符時,keyCode為按下的鍵的鍵值,charCode為0
  12. 注意:功能鍵不會觸發keypress事件,因為 keypress對應的就是可打印的字符,但是有一點IE和FF 中的區別,你按下一個字符鍵的同時按下alt鍵,在IE中不觸發keypress事件,但是在ff中可觸發,我發現在IE中按下ctrl鍵的時候只有按下 q鍵會觸發事件其他的要么不會觸發事件,要么被瀏覽器IE自身捕獲了,例如你按下ctrl_A,全選某個東西,你按ctrl_S保存文件,但是在FF中就 好多了,事件都是先傳遞到網頁,再向外傳遞
  13. 鑒於IE和FF中的區別,如果你比較懶的話,建議只使用keydow和keyup事件,這兩種事件的使用在IE和FF中基本上沒有區別,也不要捕獲ctrl_A等被瀏覽器定義為快捷鍵的事件
  14. 鍵盤事件event對象還有三個其他的屬性altKey, ctrlKey, and shiftKey 來判斷你按下一個鍵的時候是否按下了alt等鍵,這三個屬性使用比較簡單,三種事件都可以使用,也不存在ie和ff的兼容性問題

二、event.which

Netscape/Firefox/Opera中不支持 window.event.keyCode,需要用event.which代替,IE用event.keCode方法獲取當前被按下的鍵盤按鍵值,而 NetScape/FireFox/Opera用的則是event.which


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM