1. 程式人生 > 實用技巧 >jquery 鍵盤事件 keypress() keydown() keyup()

jquery 鍵盤事件 keypress() keydown() keyup()

事件的定義

完整的 key press 過程分為兩個部分:1. 按鍵被按下;2. 按鍵被鬆開。

當按鈕被按下時,發生 keydown 事件。

keydown() 方法觸發 keydown 事件,或規定當發生 keydown 事件時執行的函式。

當按鈕被鬆開時,發生 keyup 事件。它發生在當前獲得焦點的元素上。

keyup() 方法觸發 keyup 事件,或規定當發生 keyup 事件時執行的函式。

keypress 事件與 keydown 事件類似。當按鈕被按下時,會發生該事件。它發生在當前獲得焦點的元素上。

不過,與 keydown 事件不同,每插入一個字元,就會發生 keypress 事件。

keypress() 方法觸發 keypress 事件,或規定當發生 keypress 事件時執行的函式。

使用情況:

  (which事件)

$("input").keydown(function(event){ $("div").html("Key: " + event.which); });

  which 屬性指示按了哪個鍵或按鈕。(event.keyCodeevent.charCode進行了標準化。)

1.理論上它可以繫結到任何元素,但keydown/keyup事件只是傳送到具有焦點的元素上,不同的瀏覽器中,可獲得焦點的元素略有不同,但是表單元素總是能獲取焦點,所以對於此事件型別表單元素是最合適的

  2.在input元素上繫結keydown事件時獲取的內容都是之前輸入的,當前輸入的獲取不到

  3.keydown()事件觸發在文字還沒有敲進文字框,這時如果在kevdown事件中輸入文字框中的文字,得到的是觸發鍵盤事件前的文字

  4.keyup()事件觸發時整個鍵盤事件的操作已經完成,獲得的是觸發鍵盤事件後的文字

  5.keypress()捕獲瀏覽器鍵盤輸入的時候

  6.keypress事件與keydown和keyup的主要區別(所以使用組合鍵時需要使用keydown事件相容)

只能捕獲單個字元,不能捕獲組合鍵

無法響應系統功能鍵(如delete,backspace)

不區分小鍵盤和主鍵盤的數字字元

  7.KeyPress主要用來接收字母、數字等ANSI字元

  8.KeyDown 和 KeyUP 事件過程可以處理任何不被 KeyPress 識別的擊鍵,如:功能鍵(F1-F12)、編輯鍵、定位鍵以及任何這些鍵和鍵盤換檔鍵的組合等

  • 在使用鍵盤的時候通常會用到 Ctrl+shift+alt 類似的組合鍵功能,通過 keyup 事件能夠處理(說明一下這裡不用keydown事件:因為在判定keydown 的時候,ctrl、shift、和Alt屬於一直按下狀態然後再加另外一個鍵是不能準確捕獲組合鍵,所以使用keydown 是不能準確判斷的,要通過keyup事件來判定)