當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。