jQuery鍵盤事件之keydown()與keyup()事件
鼠標有mousedown,mouseup之類的事件,這是根據人的手勢動作分解的2個觸發行為。相對應的鍵盤也有這類事件,將用戶行為分解成2個動作,鍵盤按下與松手,針對這樣的2種動作,jQuery分別提供了對應keydown與keyup方法來監聽
keydown事件:
當用戶在一個元素上第一次按下鍵盤上字母鍵的時候,就會觸發它。使用上非常簡單,與基本事件參數處理保持一致,這里使用不在重復了,列出使用的方法
//直接綁定事件 $elem.keydown( handler(eventObject) ) //傳遞參數 $elem.keydown( [eventData ], handler(eventObject) ) //手動觸發已綁定的事件 $elem.keydown()
keyup事件:
當用戶在一個元素上第一次松手鍵盤上的鍵的時候,就會觸發它。使用方法與keydown是一致的只是觸發的條件是方法的
注意:
- keydown是在鍵盤按下就會觸發
- keyup是在鍵盤松手就會觸發
- 理論上它可以綁定到任何元素,但keydown/keyup事件只是發送到具有焦點的元素上,不同的瀏覽器中,可獲得焦點的元素略有不同,但是表單元素總是能獲取焦點,所以對於此事件類型表單元素是最合適的。
<h2>keydown()與keyup()事件</h2>
<div class="left">
<h4>測試一</h4>
<div class="aaron">監聽keydown輸入:
<input class="target1" type="text" value="" /><br />
按下顯示輸入的值:<em></em>
</div>
<h4>測試二</h4>
<div class="aaron">監聽keyup輸入:
<input class="target2" type="text" value="" /><br />
松手顯示輸入的值:<em></em>
</div>
</div>
<script type="text/javascript">
//監聽鍵盤按鍵
//獲取輸入的值
$('.target1').keydown(function(e) {
$("em:first").text(e.target.value)
});
//監聽鍵盤按鍵
//獲取輸入的值
$('.target2').keyup(function(e) {
$("em:last").text(e.target.value)
});
</script>
jQuery鍵盤事件之keypress()事件
在input元素上綁定keydown事件會發現一個問題:
每次獲取的內容都是之前輸入的,當前輸入的獲取不到
keydown事件觸發在文字還沒敲進文本框,這時如果在keydown事件中輸出文本框中的文本,得到的是觸發鍵盤事件前的文本,而keyup事件觸發時整個鍵盤事件的操作已經完成,獲得的是觸發鍵盤事件后的文本
當瀏覽器捕獲鍵盤輸入時,還提供了一個keypress的響應,這個跟keydown是非常相似,這里使用請參考keydown這一節,具體說說不同點
keypress事件與keydown和keyup的主要區別
- 只能捕獲單個字符,不能捕獲組合鍵
- 無法響應系統功能鍵(如delete,backspace)
- 不區分小鍵盤和主鍵盤的數字字符
總而言之,
KeyPress主要用來接收字母、數字等ANSI字符,而 KeyDown 和 KeyUP 事件過程可以處理任何不被 KeyPress 識別的擊鍵。諸如:功能鍵(F1-F12)、編輯鍵、定位鍵以及任何這些鍵和鍵盤換檔鍵的組合等。
<h2>keypress()事件</h2>
<div class="left">
<div class="aaron">監聽keypress輸入:
<input class="target1" type="text" value="" /><br />
輸入中文測試,無法顯示:<em></em>
</div>
</div>
<script type="text/javascript">
//監聽鍵盤按鍵
//獲取輸入的值
$('.target1').keypress(function(e) {
$("em").text(e.target.value)
});
</script>