--- title: 'HTMLElement: beforeinput イベント' slug: Web/API/HTMLElement/beforeinput_event tags: - API - Event - HTML DOM - HTMLElement - InputEvent - Reference - beforeinput translation_of: Web/API/HTMLElement/beforeinput_event ---
{{APIRef}}

DOM の beforeinput イベントは、{{HTMLElement("input")}}、{{HTMLElement("select")}}、{{HTMLElement("textarea")}} 要素の値が変更されようとしているときに発生します。 このイベントは、{{domxref("HTMLElement.contentEditable", "contenteditable")}} が有効になっている要素、および {{domxref("Document.designMode", "designMode")}} がオンになっている要素にも適用されます。

contenteditabledesignMode の場合、イベントのターゲットは編集ホストです。 これらのプロパティが複数の要素に適用された場合、編集ホストは、親が編集可能ではない直近の先祖要素になります。

バブリング あり
キャンセル
インターフェイス {{DOMxRef("InputEvent")}}
イベントハンドラプロパティ なし
同期 / 非同期 同期
Composed はい
既定のアクション DOM 要素の更新

機能の検出

以下の関数は、 beforeinput に対応していれば true を返します。

function isBeforeInputEventAvailable() {
  return typeof InputEvent.prototype.getTargetRanges === "function";
}

単純なロガー

この例では、 {{HtmlElement("input")}} 要素に適用された新しい値に置き換える直前に、要素の現在の値をログに記録しています。

HTML

<input placeholder="テキストを入力" name="name"/>
<p id="values"></p>

JavaScript

const input = document.querySelector('input');
const log = document.getElementById('values');

input.addEventListener('beforeinput', updateValue);

function updateValue(e) {
  log.textContent = e.target.value;
}

結果

{{EmbedLiveSample("Simple_logger")}}

仕様書

仕様書 状態
{{SpecName('UI Events', "#event-type-beforeinput", "beforeinput event")}} {{Spec2('UI Events')}}

ブラウザーの互換性

{{Compat("api.HTMLElement.beforeinput_event")}}

関連情報