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


JQuery .focus()用法及代碼示例

用法
.focus( handler ) => jQuery

說明:將事件處理程序綁定到 "focus" JavaScript 事件,或在元素上觸發該事件。

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

    • handler
      類型:Function(Event eventObject)
      每次觸發事件時執行的函數。
  • 添加的版本:1.4.3.focus( [eventData ], handler )

    • eventData
      類型:Anything
      包含將傳遞給事件處理程序的數據的對象。
    • handler
      類型:Function(Event eventObject)
      每次觸發事件時執行的函數。
  • 添加的版本:1.0.focus()

    • 此簽名不接受任何參數。
  • 此方法是第一和第二變體中.on( "focus", handler ) 和第三變體中.trigger( "focus" ) 的快捷方式。
  • focus 事件在獲得焦點時發送到元素。此事件隱式適用於有限的元素集,例如表單元素(<input><select> 等)和鏈接(<a href>)。在最近的瀏覽器版本中,可以通過顯式設置元素的tabindex 屬性來擴展事件以包括所有元素類型。元素可以通過鍵盤命令(例如 Tab 鍵)或通過鼠標單擊元素獲得焦點。
  • 具有焦點的元素通常由瀏覽器以某種方式突出顯示,例如用虛線圍繞元素。焦點用於確定哪個元素最先接收keyboard-related 事件。

嘗試將焦點設置到隱藏元素會導致 Internet Explorer 出錯。注意僅在可見元素上使用.focus()。要在不為元素設置焦點的情況下運行元素的焦點事件處理程序,請使用 .triggerHandler( "focus" ) 而不是 .focus()

例如,考慮 HTML:

<form>
  <input id="target" type="text" value="Field 1">
  <input type="text" value="Field 2">
</form>
<div id="other">
  Trigger the handler
</div>

事件處理程序可以綁定到第一個輸入字段:

$( "#target" ).focus(function() {
  alert( "Handler for .focus() called." );
});

現在單擊第一個字段,或從另一個字段切換到它,顯示警報:

.focus() 的處理程序被調用。

我們可以在點擊另一個元素時觸發事件:

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

這段代碼執行後,點擊觸發處理程序也會提醒消息。

focus 事件不會在 Internet Explorer 中冒泡。因此,依賴於 focus 事件的事件委托的腳本將無法在瀏覽器中始終如一地工作。然而,從 1.4.2 版本開始,jQuery 通過在其事件委托方法 .live() .delegate() 中將 focus 映射到 focusin 事件來解決此限製。

其他注意事項:

  • 由於 .focus() 方法隻是 .on( "focus", handler ) 的簡寫,因此可以使用 .off( "focus" ) 進行分離。

例子:

火焦點。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>focus demo</title>
  <style>
  span {
    display: none;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p><input type="text"> <span>focus fire</span></p>
<p><input type="password"> <span>focus fire</span></p>
 
<script>
$( "input" ).focus(function() {
  $( this ).next( "span" ).css( "display", "inline" ).fadeOut( 1000 );
});
</script>
 
</body>
</html>

演示:

要阻止人們在文本輸入框中書寫,請嘗試:

$( "input[type=text]" ).focus(function() {
  $( this ).blur();
});

要在頁麵啟動時關注 id 'login' 的登錄輸入框,請嘗試:

$( document ).ready(function() {
  $( "#login" ).focus();
});

相關用法


注:本文由純淨天空篩選整理自jquery.com大神的英文原創作品 .focus()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。