.keydown()| jqueryAPI 2.2 中文手册- AspRain.cn 致力于Web开发技术翻译整理

jQuery API 2.2.0

.keydown()

分类:事件 > 键盘事件

返回: jQuery

.keydown( handler )

描述:把某个事件处理函数绑定到JavaScript事件“keydown”上,或者在某个元素上触发该事件。

加入于: 1.0
.keydown( handler )
  • handler
    类型:FunctionEvent eventObject )
    一个函数,在每次事件被触发时执行它。
加入于: 1.4.3
.keydown( [eventData ], handler )
  • eventData
    类型:Anything
    一个对象,它包含了要传递给事件处理函数的数据。
  • handler
    类型:FunctionEvent eventObject )
    一个函数,在每次事件被触发时执行它。
加入于: 1.0
.keydown()

该签名不接受任何参数。

在前两种变体中,该方法是.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>

演示结果

如果网页上不能运行示例,请点击http://www.asprain.cn/jQueryAPI/keydown.htm查看示例。

如果你觉得本文档对你有用,欢迎给翻译作者支付宝打赏,支持翻译作者源源不断翻译更多有用的技术文档。