.keydown()
.keydown( handler )
描述:把某个事件处理函数绑定到JavaScript事件“keydown”上,或者在某个元素上触发该事件。
- eventData类型:Anything一个对象,它包含了要传递给事件处理函数的数据。
- handler一个函数,在每次事件被触发时执行它。
该签名不接受任何参数。
在前两种变体中,该方法是.on( "keydown", handler )
的简写,在第三种变体中,是.trigger( "keydown" )
的简写。
当用户在键盘上按下一个键时,keydown
事件会发送到一个元素。它可以被附加到任何元素上,但是事件只能发送到带有焦点的元素上。在不同的浏览器中,可获得焦点的元素各不相同,但是表单元素总是能够获得焦点,因此是针对这种事件类型的合理的候选者。
举个例子,设想下面的HTML:
<form> <input id="target" type="text" value="Hello there"> </form> <div id="other"> Trigger the handler </div>
事件处理函数可以绑定到输入框字段上:
$( "#target" ).keydown(function() { alert( "Handler for .keydown() called." ); });
现在,当插入点在字段内部了,按下一个键显示这条提醒:
Handler for .keydown() called.要想人为触发该事件,请不带参数地调用.keydown()
。
$( "#other" ).click(function() { $( "#target" ).keydown(); });
在代码执行之后,点击“Trigger the handler”也将跳出提醒消息。
如果需要捕获在任何地方按下的键(比如说,在网页上实现全局的快捷键),可以把这个行为附加到document对象上。因为事件冒泡,任何键按下事件都会沿着各自的DOM树冒泡到document对象上,除非明确地制止它。
要想确定按下了哪个键,请检查传递给处理函数的事件对象。浏览器会用不同的属性来存储这个信息,与此同时jQuery规范化了.which
属性,因此你可以可靠地使用它来检索到键代码。该代码对应到键盘上的每个键,包括特殊键的代码,比如说箭头键。要想捕获实际的输入文本,.keypress()
会是更好的选择。
其它说明
- 因为
.keydown()
方法是.on( "keydown", handler )
的简写,所以可以使用.off( "keydown" )
来分离。
示例
当输入框中按下一个键时,显示针对keydown处理函数的事件对象。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>keydown 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-1.10.2.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="http://api.jquery.com/sources/events.js"></script> <script> var xTriggered = 0; $( "#target" ).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" ).click(function() { $( "#target" ).keydown(); }); </script> </body> </html>
演示结果