# .keydown()

所属分类：事件 > 键盘事件 英文文档：.keydown()

## .keydown( handler(eventObject) )返回: jQuery

描述: 为 "keydown" 事件绑定一个处理函数，或者触发元素上的 "keydown" 事件。

- #### 添加的版本: 1.0.keydown( handler(eventObject) )

  - handler(eventObject)
    类型: Function()
    每次事件触发时会执行的函数。

- #### 添加的版本: 1.4.3.keydown( [eventData ], handler(eventObject) )

  - eventData
    类型: PlainObject
    一个对象，它包含的数据键值对映射将被传递给事件处理程序。
  - handler(eventObject)
    类型: Function()
    每次事件触发时会执行的函数。

- #### 添加的版本: 1.0.keydown()

  - 这个方法不接受任何参数。

这个方法的前两个用法是 `.bind('keydown', handler)` 的快捷方式，第3个不带参数的用法是 `.trigger('keydown')` 的快捷方式。

当用户在一个元素上第一次按下键盘上的键的时候，`keydown`事件就会发送给这个元素。它可以绑定到任何元素，但该事件只是发送到具有焦点的元素上。不同的浏览器中，可获得焦点的元素略有不同，但是表单元素总是能获取焦点，所以对于此事件类型表单元素是最合适的。

举个例子，看下面的代码:

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').keydown(function() {  alert('Handler for .keydown() called.');});

现在当光标插入点位于表单域并一个键被按下，警告将被显示：

Handler for .keydown() called.

调用不带参数的`.keydown()`，我们可以手动触发这个事件:

1 2 3 |
    $('#other').click(function() {  $('#target').keydown();});

这些代码执行后，点击Trigger the handler同样警报显示。

如果需要任何按键被捕获（例如，要实现网页全局上的快捷键），那么把这个事件附加到`document`对象上是非常有用的。所有的按键事件都会沿着各自的 DOM 树冒泡到 `document` 对象上，除非明确停止。

要确定哪个键被按下，我们可以检测传递给处理函数的event 对象。而浏览器使用不同的属性来存储这些信息，jQuery的规范了`.which`属性，以便我们能够可靠地使用它来检索关键代码。此代码对应一个键盘上的按键，包括像方向键这种特殊键的代码，如果要捕获实际输入文本， `.keypress()`可能是一个更好的选择。

## 例子:

#### 当一个按键在文本框内被按下的时候显示事件对象

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 |
    <!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="https://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>

#### Demo: