当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


JQuery .keypress()用法及代码示例

用法
.keypress( handler ) => jQuery

说明:将事件处理程序绑定到 "keypress" JavaScript 事件,或在元素上触发该事件。

  • 添加的版本:1.0.keypress( handler )

    • handler
      类型:Function(Event eventObject)
      每次触发事件时执行的函数。
  • 添加的版本:1.4.3.keypress( [eventData ], handler )

    • eventData
      类型:Anything
      包含将传递给事件处理程序的数据的对象。
    • handler
      类型:Function(Event eventObject)
      每次触发事件时执行的函数。
  • 添加的版本:1.0.keypress()

    • 此签名不接受任何参数。

注意:作为keypressevent 没有被任何官方规范所涵盖,使用它时遇到的实际行为可能因浏览器、浏览器版本和平台而异。

此方法是前两个变体中.on( "keypress", handler ) 和第三个变体中.trigger( "keypress" ) 的快捷方式。

keypress当浏览器注册键盘输入时,事件被发送到元素。这类似于keydown事件,除了修饰符和非打印键,例如转移,Esc键, 和删除扳机keydown事件但不是keypress事件。取决于平台和浏览器,可能会出现两个事件之间的其他差异。

keypress 事件处理程序可以附加到任何元素,但事件仅发送到具有焦点的元素。可聚焦元素可能因浏览器而异,但表单控件总能获得焦点,因此是此事件类型的合理候选者。

例如,考虑 HTML:

<form>
  <fieldset>
    <input id="target" type="text" value="Hello there">
  </fieldset>
</form>
<div id="other">
  Trigger the handler
</div>

事件处理程序可以绑定到输入字段:

$( "#target" ).keypress(function() {
  console.log( "Handler for .keypress() called." );
});

现在,当插入点在字段内时,按一个键会显示日志:

.keypress() 的处理程序被调用。

要手动触发事件,请应用不带参数的.keypress()

$( "#other" ).click(function() {
  $( "#target" ).keypress();
});

执行此代码后,单击触发处理程序div 也将记录该消息。

如果需要捕获任意位置的按键(例如,在页面上实现全局快捷键),将此行为附加到 document 对象很有用。由于事件冒泡,除非明确停止,否则所有按键都会沿 DOM 向上到达 document 对象。

要确定输入了哪个字符,请检查传递给处理函数的event 对象。虽然浏览器使用不同的属性来存储这些信息,但 jQuery 标准化了 .which 属性,因此您可以可靠地使用它来检索字符代码。

请注意,keydownkeyup 提供了一个代码,指示按下了哪个键,而keypress 指示输入了哪个字符。例如,小写 "a" 将由 keydownkeyup 报告为 65,但由 keypress 报告为 97。所有事件都将大写 "A" 报告为 65。由于这种区别,当捕捉方向键等特殊击键时,.keydown().keyup() 是更好的选择。

其他注意事项:

  • 由于 .keypress() 方法只是 .on( "keypress", handler ) 的简写,因此可以使用 .off( "keypress" ) 进行分离。

例子:

在输入中按下某个键时显示事件对象。注意:此演示依赖于一个简单的 $.print() 插件 (https://api.jquery.com/resources/events.js) 用于事件对象的输出。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>keypress 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.5.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 src="/resources/events.js"></script>
 
<script>
var xTriggered = 0;
$( "#target" ).keypress(function( event ) {
  if ( event.which == 13 ) {
     event.preventDefault();
  }
  xTriggered++;
  var msg = "Handler for .keypress() called " + xTriggered + " time(s).";
  $.print( msg, "html" );
  $.print( event );
});
 
$( "#other" ).click(function() {
  $( "#target" ).keypress();
});
</script>
 
</body>
</html>

演示:

相关用法


注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 .keypress()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。