Element: input 事件

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

当用户直接操作 <input><select><textarea> 元素的 value 导致其改变时,会触发 input 事件(例如,在文本框中输入或选中复选框)。

当启用 contenteditable 属性的元素,或在 designMode 开启的任何元素上,也会应用此事件。对于 contenteditabledesignMode,事件目标是编辑宿主。如果这些属性应用于多个元素,编辑宿主将是其父元素未被编辑的最近的祖先元素。

对于 type=checkboxtype=radio<input> 元素,根据 HTML Living Standard 规范,当用户切换控件时,应该会触发 input 事件。然而,历史上这种情况并非总是如此。请检查兼容性,或者对于这些类型的元素,考虑使用 change 事件。

对于接受文本输入的 <textarea><input> 元素(如 type=texttype=tel 等),接口是 InputEvent;对于其他元素,接口是 Event

每当元素的 value 改变时,都会触发 input 事件。这与 change 事件不同,后者仅在值已提交时触发,例如通过按下回车键或从选项列表中选择值。请注意,当 JavaScript 以编程方式更改元素的 value 时,不会触发 input 事件。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("input", (event) => { })

oninput = (event) => { }

事件类型

一个 InputEvent。继承自 UIEvent

Event UIEvent InputEvent

事件属性

此接口继承自其父接口 UIEventEvent 的属性。

InputEvent.data 只读

返回一个包含插入字符的字符串。如果更改没有插入文本(例如,删除字符),则此字符串可能为空。

InputEvent.dataTransfer 只读

返回一个 DataTransfer 对象,其中包含有关添加到可编辑内容或从中移除的富文本或纯文本数据的信息。

InputEvent.inputType 只读

返回可编辑内容的更改类型,例如,插入、删除或格式化文本。

InputEvent.isComposing 只读

返回一个 Boolean 值,指示事件是在 compositionstart 之后和 compositionend 之前触发的。

示例

此示例会在您更改 <input> 元素的值时记录该值。

HTML

html
<input placeholder="Enter some text" name="name" />
<p id="values"></p>

JavaScript

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

input.addEventListener("input", updateValue);

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

结果

规范

规范
UI 事件
# event-type-input
HTML
# handler-oninput

浏览器兼容性

另见