概述 keydown( handler(eventObject) )
返回值:jQuery
描述:为 "keydown" 事件绑定一个处理函数,或者触发元素上的 "keydown" 事件。
这个方法的前两个用法是 .bind('keydown', handler)
的快捷方式,第3个不带参数的用法是 .trigger('keydown')
的快捷方式。
当用户在一个元素上按下键盘上的键的时候,keydown
事件就会发送给这个元素。
如果按下该键不放(保持按下状态),事件被重复发送到该键,时间间隔取决于操作系统。它可以绑定到任何元素,但该事件只是发送到具有焦点的元素上。不同的浏览器中,可获得焦点的元素略有不同,但是表单元素总是能获取焦点,所以对于此事件类型表单元素是最合适的。
举个示例,看下面的代码:
- <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
对象上,除非明确停止。
要确定哪个键被按下,我们可以检测传递给处理函数的event 对象。而浏览器使用不同的属性来存储这些信息,jQuery的规范了.which
属性,以便我们能够可靠地使用它来检索关键代码。此代码对应一个键盘上的按键,包括像方向键这种特殊键的代码,如果要捕获实际输入文本, .keypress()
可能是一个更好的选择。
.keydown()
方法只是作为.on( "keydown", handler )
的一个速记写法,移除该事件可以使用.off(
"keydown"
)
。
示例
当一个按键在文本框内被按下的时候显示事件对象
- <!DOCTYPE html>
- <html>
- <head>
- <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="http://code.jquery.com/jquery-latest.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').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>