--- title: 'Element: focus イベント' slug: Web/API/Element/focus_event tags: - API - DOM - Element - Event - Focus - FocusEvent - Reference - イベント translation_of: Web/API/Element/focus_event ---
{{APIRef}}

focus イベントは、要素がフォーカスを受け取ったときに発生します。このイベントと {{domxref("Element/focusin_event", "focusin")}} との違いは、 focusin がバブリングを行うのに対し focus は行わないことです。

focus の反対は {{domxref("Element/blur_event", "blur")}} です。

バブリング なし
キャンセル可能 いいえ
インターフェイス {{DOMxRef("FocusEvent")}}
イベントハンドラープロパティ {{domxref("GlobalEventHandlers/onfocus", "onfocus")}}
同期 / 非同期 同期
Composed はい

簡単な例

HTML

<form id="form">
  <input type="text" placeholder="text input">
  <input type="password" placeholder="password">
</form>

JavaScript

const password = document.querySelector('input[type="password"]');

password.addEventListener('focus', (event) => {
  event.target.style.background = 'pink';
});

password.addEventListener('blur', (event) => {
  event.target.style.background = '';
});

結果

{{EmbedLiveSample("Simple_example", '100%', '50px')}}

イベント委譲

このイベントのイベント委譲を実装する方法は二つあります。 {{Event("focusout")}} イベントを使用するか、 {{domxref("EventTarget.addEventListener()", "addEventListener()")}} の useCapture 引数に true を設定するかです。

HTML

<form id="form">
  <input type="text" placeholder="text input">
  <input type="password" placeholder="password">
</form>

JavaScript

const form = document.getElementById('form');

form.addEventListener('focus', (event) => {
  event.target.style.background = 'pink';
}, true);

form.addEventListener('blur', (event) => {
  event.target.style.background = '';
}, true);

結果

{{EmbedLiveSample("Event_delegation", '100%', '50px')}}

仕様書

仕様書 状態 備考
{{SpecName("UI Events", "#event-type-focus")}} {{Spec2("UI Events")}} Added info that this event is composed.
{{SpecName("DOM3 Events", "#event-type-focus")}} {{Spec2("DOM3 Events")}} 初回定義

ブラウザーの対応

{{Compat("api.Element.focus_event")}}

関連情報