1. 程式人生 > >js鍵盤相關知識總結

js鍵盤相關知識總結

-c 單個 har 觸發 區分 var 鍵盤 知識總結 del

一、相應事件

keydown:按下鍵盤上的任意鍵都可觸發,按著不放則重復觸發

keypress:按下鍵盤上的字符鍵時觸發,按著不放則重復觸發

keyup:釋放按鍵時觸發

事件順序:keydown>keypress>keypup

在文本框中捕獲按鍵事件需要註意的地方:

1.keydown、keypress是在文本框內容變化前發生,keyup則是在文本框變化後發生。

2.如果輸入的是中文,keypress不會觸發

二、如何獲取按鍵值

在js獲取鍵盤按下的鍵值有:event.keyCodeevent.charCodeevent.which

谷歌瀏覽器:event.keyCode

event.charCodeevent.which都兼容。

火狐瀏覽器:event.keyCode部分鍵值有效,如上下左右鍵(37,38,39,40),enter鍵(13),PgUp(33),PgDn(34)等部分有效,對數字鍵,字母鍵無效。

event.which也是部分鍵值有效,如字母鍵,數字鍵,enter鍵,Backspace鍵等有效,對上下左右鍵,PgUp(33),PgDn(34)鍵無效。

event.charCode也是對部分鍵值有效,如字母鍵,數字鍵,,Backspace鍵等有效,對enter鍵,上下左右鍵,PgUp(33),PgDn(34)鍵無效。

ie瀏覽器:中,IE8及以下瀏覽器無event.charCode和event.which

event.keyCode對大部分鍵值能獲得,但是有少部分也不能獲得

兼容性的寫法如下:

var code=e.keyCode || e.which || e.charCode

三、該用什麽事件來獲取按鍵值

  • KeyDown觸發後,不一定觸發KeyUp,當KeyDown 按下後,拖動鼠標,那麽將不會觸發KeyUp事件。
  • KeyPress主要用來捕獲數字(註意:包括Shift+數字的符號)、字母(註意:包括大小寫)、小鍵盤等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜單鍵}、{開始鍵}和方向鍵外的ANSI字符
  • KeyDown 和KeyUp 通常可以捕獲鍵盤除了PrScrn所有按鍵(這裏不討論特殊鍵盤的特殊鍵)
  • KeyPress 只能捕獲單個字符,KeyDown 和KeyUp 可以捕獲組合鍵。
  • KeyPress 可以捕獲單個字符的大小寫,KeyDown和KeyUp 不能。
  • KeyPress 不區分小鍵盤和主鍵盤的數字字符,KeyDown 和KeyUp 區分。

總結:用keypress事件對象獲取按鍵字符,用keydown事件獲取功能字符(如Enter,Backspace等)

js鍵盤相關知識總結