keydown 事件


將事件處理常式繫結到「keydown」事件,或在元素上觸發該事件。

.on( "keydown" [, eventData ], handler )傳回:jQuery

說明:將事件處理常式繫結到「keydown」事件。

此頁面說明 keydown 事件。有關已棄用的 .keydown() 方法,請參閱 .keydown()

當使用者按下鍵盤上的按鍵時,keydown 事件會傳送至元素。如果按鍵持續按壓,則每次作業系統重複按鍵時,都會傳送事件。它可以附加至任何元素,但事件只會傳送至具有焦點的元素。可對焦元素會因瀏覽器而異,但表單元素總是能取得焦點,因此是此事件類型的合理候選者。

例如,考慮 HTML

1
2
3
4
5
6
<form>
<input id="target" type="text" value="Hello there">
</form>
<div id="other">
Trigger the handler
</div>

事件處理常式可以繫結至輸入欄位

1
2
3
$( "#target" ).on( "keydown", function() {
alert( "Handler for `keydown` called." );
} );

現在當插入點在欄位內時,按下按鍵會顯示警示

已呼叫 `keydown` 處理常式。

若要手動觸發事件,請使用 .trigger( "keydown" )

1
2
3
$( "#other" ).on( "click", function() {
$( "#target" ).trigger( "keydown" );
} );

此程式碼執行後,按一下 觸發處理常式 也會發出警示訊息。

如果需要擷取任何地方的按鍵 (例如,在頁面上實作全域快速鍵),將此行為附加至 document 物件會很有用。由於事件冒泡,所有按鍵都會沿著 DOM 往上升至 document 物件,除非明確停止。

若要判斷按了哪個按鍵,請檢查傳遞至處理常式函式的 事件物件。雖然瀏覽器使用不同的屬性來儲存此資訊,但 jQuery 標準化了 .which 屬性,因此您可以可靠地使用它來擷取按鍵代碼。此代碼對應鍵盤上的按鍵,包括箭頭等特殊按鍵的代碼。若要擷取實際文字輸入,.keypress() 可能會是更好的選擇。

範例

當在輸入中按下按鍵時,顯示 keydown 處理常式的事件物件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>on demo</title>
<style>
fieldset {
margin-bottom: 1em;
}
input {
display: block;
margin-bottom: .25em;
}
#print-output {
width: 100%;
}
.print-output-line {
white-space: pre;
padding: 5px;
font-family: monaco, monospace;
font-size: .7em;
}
</style>
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
<form>
<fieldset>
<label for="target">Type Something:</label>
<input id="target" type="text">
</fieldset>
</form>
<button id="other">
Trigger the handler
</button>
<script type="text/javascript" src="/resources/events.js"></script>
<script>
var xTriggered = 0;
$( "#target" ).on( "keydown", function( event ) {
if ( event.which == 13 ) {
event.preventDefault();
}
xTriggered++;
var msg = "Handler for `keydown` called " + xTriggered + " time(s).";
$.print( msg, "html" );
$.print( event );
} );
$( "#other" ).on( "click", function() {
$( "#target" ).trigger( "keydown" );
} );
</script>
</body>
</html>

示範