1. 4.10.5 input 元素
        1. 4.10.5.1 type 属性的状态
          1. 4.10.5.1.1 隐藏状态 (type=hidden)
          2. 4.10.5.1.2 文本状态 (type=text) 和搜索状态 (type=search)
          3. 4.10.5.1.3 电话状态 (type=tel)
          4. 4.10.5.1.4 URL 状态 (type=url)
          5. 4.10.5.1.5 电子邮件状态 (type=email)
          6. 4.10.5.1.6 密码状态 (type=password)
          7. 4.10.5.1.7 日期状态 (type=date)
          8. 4.10.5.1.8 月份状态 (type=month)
          9. 4.10.5.1.9 星期状态 (type=week)
          10. 4.10.5.1.10 时间状态 (type=time)
          11. 4.10.5.1.11 本地日期和时间状态 (type=datetime-local)
          12. 4.10.5.1.12 数字状态 (type=number)
          13. 4.10.5.1.13 范围状态 (type=range)
          14. 4.10.5.1.14 颜色状态 (type=color)
          15. 4.10.5.1.15 复选框状态 (type=checkbox)
          16. 4.10.5.1.16 单选按钮状态 (type=radio)
          17. 4.10.5.1.17 文件上传状态 (type=file)
          18. 4.10.5.1.18 提交按钮状态 (type=submit)
          19. 4.10.5.1.19 图像按钮状态 (type=image)
          20. 4.10.5.1.20 重置按钮状态 (type=reset)
          21. 4.10.5.1.21 按钮状态 (type=button)
        2. 4.10.5.2 关于表单控件本地化的实现说明
        3. 4.10.5.3 input 元素的通用属性
          1. 4.10.5.3.1 maxlengthminlength 属性
          2. 4.10.5.3.2 size 属性
          3. 4.10.5.3.3 readonly 属性
          4. 4.10.5.3.4 required 属性
          5. 4.10.5.3.5 multiple 属性
          6. 4.10.5.3.6 pattern 属性
          7. 4.10.5.3.7 minmax 属性
          8. 4.10.5.3.8 step 属性
          9. 4.10.5.3.9 list 属性
          10. 4.10.5.3.10 placeholder 属性
        4. 4.10.5.4 input 元素的通用 API
        5. 4.10.5.5 通用事件行为

4.10.5 input 元素

元素/输入

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android1+Samsung Internet?Opera Android12.1+

元素/输入

HTMLInputElement

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera8+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android10.1+
类别:
流内容.
短语内容.
如果 type 属性 不在 隐藏 状态中:交互式内容
如果 type 属性 不在 隐藏 状态中:列出的可标记的可提交的可重置的,以及 自动大写和自动更正继承 与表单相关的元素
如果 type 属性 隐藏 状态中:列出的可提交的可重置的,以及 自动大写和自动更正继承 与表单相关的元素
如果 type 属性 不在 隐藏 状态中:可感知内容
可以使用此元素的上下文:
在预期 短语内容 的地方。
内容模型:
.
在 text/html 中的标签省略:
没有 结束标签
内容属性:
全局属性
accept — 在 文件上传控件 中,提示预期文件类型
alt — 当图像不可用时使用的替代文本
autocomplete — 表单自动填充功能的提示
checked — 控制是否选中
dirname — 要用于发送元素的 方向性 的表单控件的名称,在 表单提交 中使用
disabled — 表单控件是否禁用
form — 将元素与 form 元素关联起来
formaction — 用于 表单提交URL
formenctype — 用于 表单提交条目列表 编码类型
formmethod — 用于 表单提交 的变体
formnovalidate — 在 表单提交 时绕过表单控件验证
formtarget — 用于 表单提交可导航的
height — 垂直尺寸
list — 自动完成选项的列表
max — 最大值
maxlength — 值的 长度 的最大值
min — 最小值
minlength — 值的 长度 的最小值
multiple — 是否允许多个值
name — 用于 表单提交 以及在 form.elements API 中使用的元素名称
pattern — 要与表单控件的值匹配的模式
placeholder — 要放置在表单控件内的用户可见标签
popovertarget — 目标为要切换、显示或隐藏的弹出窗口元素
popovertargetaction — 指示目标为要切换、显示或隐藏的弹出窗口元素
readonly — 是否允许用户编辑值
required — 控制是否要求用于 表单提交
size — 控制的大小
src — 资源的地址
step — 要与表单控件的值匹配的粒度
type — 表单控件的类型
value — 表单控件的值
width — 水平尺寸
此外,title 属性 在此元素上具有特殊语义:模式的描述 (当与 pattern 属性一起使用时)
无障碍考虑:
type 属性在 隐藏 状态中:供作者使用供实施者使用
type 属性在 文本 状态中:供作者使用供实施者使用
type 属性在 搜索 状态中:供作者使用供实施者使用
type 属性在 电话 状态下:面向作者面向实施者.
type 属性在 URL 状态下:面向作者面向实施者.
type 属性在 电子邮件 状态下:面向作者面向实施者.
type 属性在 密码 状态下:面向作者面向实施者.
type 属性在 日期 状态下:面向作者面向实施者.
type 属性在 月份 状态下:面向作者面向实施者.
type 属性在 星期 状态下:面向作者面向实施者.
type 属性在 时间 状态下:面向作者面向实施者.
type 属性在 本地日期和时间 状态下:面向作者面向实施者.
type 属性在 数字 状态下:面向作者面向实施者.
type 属性在 范围 状态下:面向作者面向实施者.
type 属性在 颜色 状态下:面向作者面向实施者.
type 属性在 复选框 状态下:面向作者面向实施者.
type 属性在 单选按钮 状态下:面向作者面向实施者.
type 属性在 文件上传 状态下:面向作者面向实施者.
type 属性在 提交按钮 状态下:面向作者面向实施者.
type 属性在 图像按钮 状态下:面向作者面向实施者.
type 属性在 重置按钮 状态下:面向作者面向实施者.
type 属性在 按钮 状态下:面向作者面向实施者.
DOM 接口:
[Exposed=Window]
interface HTMLInputElement : HTMLElement {
  [HTMLConstructor] constructor();

  [CEReactions] attribute DOMString accept;
  [CEReactions] attribute DOMString alt;
  [CEReactions] attribute DOMString autocomplete;
  [CEReactions] attribute boolean defaultChecked;
  attribute boolean checked;
  [CEReactions] attribute DOMString dirName;
  [CEReactions] attribute boolean disabled;
  readonly attribute HTMLFormElement? form;
  attribute FileList? files;
  [CEReactions] attribute USVString formAction;
  [CEReactions] attribute DOMString formEnctype;
  [CEReactions] attribute DOMString formMethod;
  [CEReactions] attribute boolean formNoValidate;
  [CEReactions] attribute DOMString formTarget;
  [CEReactions] attribute unsigned long height;
  attribute boolean indeterminate;
  readonly attribute HTMLDataListElement? list;
  [CEReactions] attribute DOMString max;
  [CEReactions] attribute long maxLength;
  [CEReactions] attribute DOMString min;
  [CEReactions] attribute long minLength;
  [CEReactions] attribute boolean multiple;
  [CEReactions] attribute DOMString name;
  [CEReactions] attribute DOMString pattern;
  [CEReactions] attribute DOMString placeholder;
  [CEReactions] attribute boolean readOnly;
  [CEReactions] attribute boolean required;
  [CEReactions] attribute unsigned long size;
  [CEReactions] attribute USVString src;
  [CEReactions] attribute DOMString step;
  [CEReactions] attribute DOMString type;
  [CEReactions] attribute DOMString defaultValue;
  [CEReactions] attribute [LegacyNullToEmptyString] DOMString value;
  attribute object? valueAsDate;
  attribute unrestricted double valueAsNumber;
  [CEReactions] attribute unsigned long width;

  undefined stepUp(optional long n = 1);
  undefined stepDown(optional long n = 1);

  readonly attribute boolean willValidate;
  readonly attribute ValidityState validity;
  readonly attribute DOMString validationMessage;
  boolean checkValidity();
  boolean reportValidity();
  undefined setCustomValidity(DOMString error);

  readonly attribute NodeList? labels;

  undefined select();
  attribute unsigned long? selectionStart;
  attribute unsigned long? selectionEnd;
  attribute DOMString? selectionDirection;
  undefined setRangeText(DOMString replacement);
  undefined setRangeText(DOMString replacement, unsigned long start, unsigned long end, optional SelectionMode selectionMode = "preserve");
  undefined setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction);

  undefined showPicker();

  // also has obsolete members
};
HTMLInputElement includes PopoverInvokerElement;

The input 元素 表示 一个类型化数据字段,通常包含一个表单控件,允许用户编辑数据。

The type 属性控制元素的数据类型(以及关联的控件)。它是一个具有以下关键字和状态的 枚举属性

关键字状态数据类型控件类型
hidden 隐藏 任意字符串n/a
text 文本 没有换行符的文本文本控件
search 搜索 没有换行符的文本搜索控件
tel 电话 没有换行符的文本文本控件
url URL 绝对 URL文本控件
email 电子邮件 电子邮件地址或电子邮件地址列表文本控件
password 密码 没有换行符的文本(敏感信息)一个用于隐藏数据输入的文本控件
date 日期 日期(年、月、日),不含时区日期控件
month 月份 包含年和月的日期,不含时区月份控件
week 星期 包含周年的年份和星期号的日期,不含时区星期控件
time 时间 时间(时、分、秒、秒的小数部分),不含时区时间控件
datetime-local 本地日期和时间 日期和时间(年、月、日、时、分、秒、秒的小数部分),不含时区日期和时间控件
number 数字 数值文本控件或微调器控件
range 范围 数值,具有额外的语义,即精确值并不重要滑块控件或类似控件
color 颜色 具有 8 位红色、绿色和蓝色分量的 sRGB 颜色颜色选择器
checkbox 复选框 从预定义列表中选择零个或多个值复选框
radio 单选按钮 枚举值单选按钮
file 文件上传 零个或多个文件,每个文件都具有 MIME 类型,并且可以选择具有文件名标签和按钮
submit 提交按钮 枚举值,具有额外的语义,即它必须是最后选择的值,并启动表单提交按钮
image 图像按钮 相对于特定图像大小的坐标,具有额外的语义,即它必须是最后选择的值,并启动表单提交可点击图像或按钮
reset 重置按钮 n/a按钮
button 按钮 n/a按钮

属性的 缺失值默认值无效值默认值 都是 文本 状态。

哪些 acceptaltautocompletecheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightlistmaxmaxlengthminminlengthmultiplepatternplaceholderreadonlyrequiredsizesrcstepwidth 内容属性、checkedfilesvalueAsDatevalueAsNumberlist IDL 属性、select() 方法、selectionStartselectionEndselectionDirection IDL 属性、setRangeText()setSelectionRange() 方法、stepUp()stepDown() 方法以及 inputchange 事件 应用input 元素,取决于其 type 属性的状态。定义每个类型的子节也明确地在规范性“簿记”部分中定义了这些功能中的哪些适用,以及哪些 不适用 于每个类型。这些功能的行为取决于它们是否适用,如它们各自的部分中所定义(参见 内容属性API事件)。

下表是非规范性的,并总结了哪些内容属性、IDL 属性、方法和事件 应用 于每个状态

隐藏 文本搜索 电话, URL 电子邮件 密码 日期, 月份, 星期, 时间 本地日期和时间 数字 范围 颜色 复选框, 单选按钮 文件上传 提交按钮 图像按钮 重置按钮, 按钮
内容属性
接受 ··············
替代文本 ··············
自动完成 ·····
选中 ··············
目录名 ·········
表单操作 ·············
表单编码类型 ·············
表单方法 ·············
表单验证 ·············
表单目标 ·············
高度 ··············
列表 ·······
最大值 ···········
最大长度 ···········
最小值 ···········
最小长度 ···········
多选 ·············
模式 ···········
占位符 ··········
弹出框目标 ············
弹出框目标操作 ············
只读 ········
必填 ······
大小 ···········
··············
步长 ···········
宽度 ··············
IDL 属性和方法
选中 ··············
文件 ··············
默认值 默认值/开启 文件名 默认值 默认值 默认值
日期值 ··············
数值值 ···········
列表 ·······
选择() ·是†是†是†是†·是†·是†···
选择开始位置 ············
选择结束位置 ············
选择方向 ············
设置文本范围() ············
设置选择范围() ············
向下步进() ···········
向上步进() ···········
事件
input 事件 ····
change 事件 ····

† 如果控件没有可选文本,则 select() 方法将执行无操作,不会出现 "InvalidStateError" DOMException

type 属性的某些状态定义了 值清理算法

每个 input 元素都具有一个 ,它由 value IDL 属性公开。某些状态定义了 将字符串转换为数字的算法将数字转换为字符串的算法将字符串转换为 Date 对象的算法 以及 Date 对象转换为字符串的算法,这些算法由 maxminstepvalueAsDatevalueAsNumberstepUp() 使用。

input 元素的 脏值标志 必须在用户与控件交互以更改 时设置为 true。(它还将在以编程方式更改值时设置为 true,如 value IDL 属性定义中所述。)

value 内容属性提供了 input 元素的默认 。当添加、设置或删除 value 内容属性时,如果控件的 脏值标志 为 false,则用户代理必须将元素的 设置为 value 内容属性的值(如果有),否则设置为空字符串,然后运行当前 值清理算法(如果定义了)。

每个 input 元素都具有一个 选中状态,它由 checked IDL 属性公开。

每个 input 元素都具有一个布尔型 脏选中状态标志。当它为 true 时,表示该元素具有 脏选中状态脏选中状态标志 必须在创建元素时最初设置为 false,并且必须在用户与控件交互以更改 选中状态 时设置为 true。

元素/input#checked

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

checked 内容属性是一个 布尔型属性,它提供了 input 元素的默认 选中状态。当添加 checked 内容属性时,如果控件没有 脏选中状态,则用户代理必须将元素的 选中状态 设置为 true;当删除 checked 内容属性时,如果控件没有 脏选中状态,则用户代理必须将元素的 选中状态 设置为 false。

重置算法 对于 input 元素,是将其 用户有效性脏值标志脏选中状态标志 设置回 false,将元素的 设置为 value 内容属性的值(如果有),否则设置为空字符串,如果元素具有 checked 内容属性,则将元素的 选中状态 设置为 true,否则设置为 false,清空 已选择文件 列表,然后调用 值清理算法(如果 type 属性的当前状态定义了该算法)。

每个 input 元素都可以是 可变的。除另有规定外,input 元素始终是 可变的。类似地,除另有规定外,用户代理不应允许用户修改元素的 选中状态

input 元素被 禁用 时,它将不再 可变

readonly 属性在某些情况下(例如,对于 日期 状态,但对于 复选框 状态则不行)也可以阻止 input 元素成为 可变的

克隆步骤 对于 input 元素,必须将 脏值标志选中状态脏选中状态标志 从被克隆的节点传播到副本。

激活行为 对于 input 元素 element,给定 event,以下为这些步骤

  1. 如果 element 不是 可变的,并且不在 复选框 状态,也不在 单选 状态,则返回。

  2. 运行 element输入激活行为(如果有),否则不执行任何操作。

  3. element 上运行 弹出框目标属性激活行为

请记住,元素的 激活行为 对用户触发的激活和合成激活(例如,通过 el.click())都会运行。用户代理也可能对特定控件(此处未指定)具有行为,这些行为仅由真正的用户触发的激活触发。一个常见的选择是 显示选择器(如果适用),用于该控件。相反,输入激活行为 仅对 文件上传颜色 状态的特殊历史案例显示选择器。

传统预激活行为 对于 input 元素,以下为这些步骤

  1. 如果此元素的 type 属性处于 复选框状态,则将此元素的 选中状态 设置为其相反的值(即,如果为假,则为真,如果为真,则为假),并将此元素的 indeterminate IDL 属性设置为 false。

  2. 如果此元素的 type 属性处于 单选按钮状态,则获取对此元素的 单选按钮组选中状态 设置为 true 的元素的引用(如果有),然后将此元素的 选中状态 设置为 true。

旧版取消激活行为 用于 input 元素的步骤如下

  1. 如果元素的 type 属性处于 复选框状态,则将元素的 选中状态 和元素的 indeterminate IDL 属性设置回 旧版预激活行为 运行之前的它们的值。

  2. 如果此元素的 type 属性处于 单选按钮状态,则如果在 旧版预激活行为 中获得引用的元素(如果有)仍然在此元素的 单选按钮组 中(如果有),并且如果确实如此,则将该元素的 选中状态 设置为 true;否则,如果没有这样的元素,或者该元素不再在此元素的 单选按钮组 中,或者此元素不再具有 单选按钮组,则将此元素的 选中状态 设置为 false。


当首次创建 input 元素时,元素的渲染和行为必须设置为为 type 属性的状态定义的渲染和行为,并且如果 type 属性的状态定义了 值清理算法,则必须调用该算法。

input 元素的 type 属性更改状态时,用户代理必须执行以下步骤

  1. 如果元素的 type 属性的先前状态将 value IDL 属性置于 value 模式下,并且元素的 value 不是空字符串,并且元素的 type 属性的新状态将 value IDL 属性置于 default 模式或 default/on 模式中,则将元素的 value 内容属性设置为元素的 value

  2. 否则,如果元素的 type 属性的先前状态将 value IDL 属性置于除 value 模式以外的任何模式中,并且元素的 type 属性的新状态将 value IDL 属性置于 value 模式中,则将元素的 value 设置为 value 内容属性的值(如果有),否则设置为空字符串,然后将控件的 脏值标志 设置为 false。

  3. 否则,如果元素的 type 属性的先前状态将 value IDL 属性置于除 filename 模式以外的任何模式中,并且元素的 type 属性的新状态将 value IDL 属性置于 filename 模式中,则将元素的 value 设置为空字符串。

  4. 将元素的渲染和行为更新为新状态。

  5. 发出类型更改信号 用于元素。(单选按钮 状态特别使用它。)

  6. 调用 值清理算法(如果 type 属性的新状态定义了该算法)。

  7. 如果 setRangeText() 之前已 应用 于元素,则将 previouslySelectable 设置为 true,否则设置为 false。

  8. 如果 setRangeText() 现在已 应用 于元素,则将 nowSelectable 设置为 true,否则设置为 false。

  9. 如果 previouslySelectable 为 false 且 nowSelectable 为 true,则将元素的 文本输入光标位置 设置为文本控件的开头,并 将其选择方向 设置为“none”。


name 属性表示元素的名称。dirname 属性控制如何提交元素的 方向性disabled 属性用于使控件不可交互,并防止其值被提交。form 属性用于明确将 input 元素与其 表单所有者 关联。autocomplete 属性控制用户代理如何提供自动填充行为。

HTMLInputElement#indeterminate

所有当前引擎都支持。

Firefox3.6+Safari3+Chrome1+
Opera≤12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS1+Chrome Android?WebView Android?Samsung Internet?Opera Android≤12.1+
caniuse.com 表格

indeterminate IDL 属性必须最初设置为 false。在获取时,它必须返回最后一次设置的值。在设置时,它必须设置为新值。除了更改 复选框 控件的外观之外,它没有其他作用。

HTMLInputElement/multiple

所有当前引擎都支持。

Firefox3.6+Safari4+Chrome2+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

acceptaltmaxminmultiplepatternplaceholderrequiredsizesrcstep IDL 属性必须 反映 同名内容属性的值。dirName IDL 属性必须 反映 dirname 内容属性的值。readOnly IDL 属性必须 反映 readonly 内容属性的值。defaultChecked IDL 属性必须 反映 checked 内容属性的值。defaultValue IDL 属性必须 反映 value 内容属性的值。

type IDL 属性必须 反映 同名内容属性的值,仅限于已知的值maxLength IDL 属性必须 反映 maxlength 内容属性的值,仅限于非负数minLength IDL 属性必须 反映 minlength 内容属性的值,仅限于非负数

IDL 属性 widthheight 必须返回图像的渲染宽度和高度,以 CSS 像素 为单位,如果图像正在 渲染;否则返回图像的 自然宽度和高度,以 CSS 像素 为单位,如果图像 可用 但未 渲染;否则返回 0,如果图像 不可用。当 输入 元素的 type 属性不在 图像按钮 状态时,则图像 不可用[CSS]

在设置时,它们必须表现得好像它们 反映 了同名内容属性。

IDL 属性 willValidatevalidityvalidationMessage 以及方法 checkValidity()reportValidity()setCustomValidity()约束验证 API 的一部分。IDL 属性 labels 提供元素的 label 列表。IDL 属性和方法 select()selectionStartselectionEndselectionDirectionsetRangeText()setSelectionRange() 公开了元素的文本选择。IDL 属性 disabledformname 是元素表单 API 的一部分。

4.10.5.1 type 属性的状态
4.10.5.1.1 隐藏 状态 (type=hidden)

Element/input/hidden

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera2+Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

输入 元素的 type 属性处于 隐藏 状态时,本节规则适用。

输入 元素 表示 一个用户不打算查看或操作的值。

约束验证:如果 输入 元素的 type 属性处于 隐藏 状态,则它 禁止约束验证

如果 name 属性存在并且其值为一个与 "_charset_" 进行 ASCII 不区分大小写 匹配的字符串,则该元素的 value 属性必须被省略。

内容属性 autocompletedirname 应用 于此元素。

IDL 属性 value 应用 于此元素,其模式为 默认

以下内容属性不得指定并且 不应用 于该元素:acceptaltcheckedformactionformenctypeformmethodformnovalidateformtargetheightlistmaxmaxlengthminminlengthmultiplepatternplaceholderpopovertargetpopovertargetactionreadonlyrequiredsizesrcstepwidth

以下 IDL 属性和方法 不应用 于该元素:checkedfileslistselectionStartselectionEndselectionDirectionvalueAsDatevalueAsNumber IDL 属性;select()setRangeText()setSelectionRange()stepDown()stepUp() 方法。

事件 inputchange 不应用

4.10.5.1.2 文本 状态 (type=text) 和 搜索 状态 (type=search)

Element/input/search

所有当前引擎都支持。

Firefox4+Safari5+Chrome5+
Opera10.6+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

Element/input/text

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

输入 元素的 type 属性处于 文本 状态或 搜索 状态时,本节规则适用。

输入 元素 表示 一个用于元素 的单行纯文本编辑控件。

文本 状态和 搜索 状态之间的主要区别在于样式:在搜索控件与普通文本控件有所区分的平台上,搜索 状态可能会导致外观与平台的搜索控件一致,而不是像普通文本控件。

如果该元素 可变,则其 应该可以由用户编辑。用户代理不得允许用户将 U+000A 换行符 (LF) 或 U+000D 回车符 (CR) 字符插入到该元素的 中。

如果该元素 可变,则用户代理应该允许用户更改该元素的书写方向,将其设置为从左到右的书写方向或从右到左的书写方向。如果用户这样做,用户代理必须随后执行以下步骤

  1. 如果用户选择了从左到右的书写方向,则将该元素的 dir 属性设置为 "ltr";如果用户选择了从右到左的书写方向,则设置为 "rtl"。

  2. 将一个元素任务排队用户交互任务源, 给定元素要 触发事件,该事件名为 input, 在元素上,其 冒泡组合 属性初始化为 true。

如果指定了 value 属性, 则其值必须不包含 U+000A LINE FEED (LF) 或 U+000D CARRIAGE RETURN (CR) 字符。

以下为 值清理算法 中删除换行符.

以下常见 input 元素内容属性、IDL 属性和方法 应用 于该元素:autocomplete, dirname, list, maxlength, minlength, pattern, placeholder, readonly, required, 和 size 内容属性; list, selectionStart, selectionEnd, selectionDirection, 和 value IDL 属性; select(), setRangeText(), 和 setSelectionRange() 方法。

value IDL 属性处于 value 模式。

inputchange 事件 应用

以下内容属性不得指定,并且 不应用 于该元素:accept, alt, checked, formaction, formenctype, formmethod, formnovalidate, formtarget, height, max, min, multiple, popovertarget, popovertargetaction, src, step, 和 width.

以下 IDL 属性和方法 不应用 于该元素:checked, files, valueAsDate, 和 valueAsNumber IDL 属性; stepDown()stepUp() 方法。

4.10.5.1.3 电话 状态 (type=tel)

元素/输入/tel

所有当前引擎都支持。

FirefoxSafari4+Chrome3+
Opera11+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS3+Chrome Android18+WebView Android37+Samsung Internet?Opera Android11+

input 元素的 type 属性处于 电话 状态时, 本节规则适用。

input 元素 表示 一个用于编辑电话号码的控件, 该电话号码以元素的 value 给出。

如果该元素是 可变的, 则其 value 应该由用户可编辑。用户代理可能会改变 中用户输入的空格和标点符号,但需谨慎。用户代理不能允许用户在元素的 value 中插入 U+000A LINE FEED (LF) 或 U+000D CARRIAGE RETURN (CR) 字符。

如果指定了 value 属性, 则其值必须不包含 U+000A LINE FEED (LF) 或 U+000D CARRIAGE RETURN (CR) 字符。

以下为 值清理算法 中删除换行符.

URLEmail 类型不同, 电话 类型不强制执行特定语法。这是故意的;在实践中,电话号码字段往往是自由格式字段,因为有各种各样的有效电话号码。需要强制执行特定格式的系统鼓励使用 pattern 属性或 setCustomValidity() 方法来连接到客户端验证机制。

以下常见 input 元素内容属性、IDL 属性和方法 应用 于该元素:autocomplete, dirname, list, maxlength, minlength, pattern, placeholder, readonly, required, 和 size 内容属性; list, selectionStart, selectionEnd, selectionDirection, 和 value IDL 属性; select(), setRangeText(), 和 setSelectionRange() 方法。

value IDL 属性处于 value 模式。

inputchange 事件 应用

以下内容属性不得指定,并且不适用于该元素:acceptaltcheckedformactionformenctypeformmethodformnovalidateformtargetheightmaxminmultiplepopovertargetpopovertargetactionsrcstep,和width

以下IDL属性和方法不适用于该元素:checkedfilesvalueAsDate,和valueAsNumber IDL属性;stepDown()stepUp()方法。

4.10.5.1.4 URL 状态 (type=url)

元素/输入/url

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera11+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

input元素的type属性处于URL状态时,本节中的规则适用。

input元素代表一个用于编辑在元素的value中给出的单个绝对URL的控件。

如果元素是可变的,用户代理应该允许用户更改其value所代表的URL。用户代理可以允许用户将value设置为不是有效绝对URL的字符串,但也可能或改为自动转义用户输入的字符,使value始终是有效绝对URL(即使这与用户在界面中看到的和编辑的实际值不符)。用户代理应该允许用户将value设置为空字符串。用户代理不得允许用户将U+000A LINE FEED (LF)或U+000D CARRIAGE RETURN (CR)字符插入到value中。

如果指定了value属性且它不为空,则它的值必须是可能被空格包围的有效URL,它也是一个绝对URL

值净化算法如下所示:从value去除换行符,然后从value去除前导和尾随的ASCII空格

约束验证:当元素的value既不是空字符串,也不是有效绝对URL时,该元素存在类型不匹配

以下常见的input元素内容属性、IDL属性和方法适用于该元素:autocompletedirnamelistmaxlengthminlengthpatternplaceholderreadonlyrequired,和size内容属性;listselectionStartselectionEndselectionDirection,和value IDL属性;select()setRangeText(),和setSelectionRange()方法。

value IDL属性处于value模式。

inputchange事件适用

以下内容属性不得指定,并且不适用于该元素:acceptaltcheckedformactionformenctypeformmethodformnovalidateformtargetheightmaxminmultiplepopovertargetpopovertargetactionsrcstep,和width

以下IDL属性和方法不适用于该元素:checkedfilesvalueAsDate,和valueAsNumber IDL属性;stepDown()stepUp()方法。

如果文档包含以下标记

<input type="url" name="location" list="urls">
<datalist id="urls">
 <option label="MIME: Format of Internet Message Bodies" value="https://www.rfc-editor.org/rfc/rfc2045">
 <option label="HTML" value="https://html.whatwg.com.cn/">
 <option label="DOM" value="https://dom.spec.whatwg.org/">
 <option label="Fullscreen" value="https://fullscreen.spec.whatwg.org/">
 <option label="Media Session" value="https://mediasession.spec.whatwg.org/">
 <option label="The Single UNIX Specification, Version 3" value="http://www.unix.org/version3/">
</datalist>

...并且用户输入了"spec.w",并且用户代理还发现用户最近访问过https://url.spec.whatwg.org/#url-parsinghttps://streams.spec.whatwg.org/,那么渲染结果可能如下所示

A text box with an icon on the left followed by the text "spec.w" and a cursor, with a drop down button on the right hand side; with, below, a drop down box containing a list of six URLs on the left, with the first four having grayed out labels on the right; and a scrollbar to the right of the drop down box, indicating further values are available.

此示例中的前四个URL由用户在作者指定列表中输入的四个URL组成,它们与用户输入的文本匹配,并以某种实现定义的方式排序(可能是根据用户引用这些URL的频率)。请注意,UA是如何利用值是URL的知识来允许用户省略方案部分并对域名进行智能匹配的。

最后两个URL(以及可能还有更多,因为滚动条指示还有更多值可用)是来自用户代理会话历史记录数据的匹配项。这些数据不会提供给页面DOM。在本例中,UA没有为这些值提供标题。

4.10.5.1.5 电子邮件 状态 (type=email)

元素/输入/电子邮件

所有当前引擎都支持。

Firefox1+Safari5+Chrome5+
Opera11+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS3+Chrome Android?WebView Android?Samsung Internet?Opera Android11+

input元素的type属性处于电子邮件状态时,本节中的规则适用。

电子邮件状态的工作方式取决于是否指定了multiple属性。

当元素上没有指定multiple属性时

input元素代表一个用于编辑在元素的value中给出的电子邮件地址的控件。

如果元素是 可变的,用户代理应允许用户更改其 所代表的电子邮件地址。用户代理可以允许用户将 设置为不是 有效电子邮件地址 的字符串。用户代理应以与预期用户提供单个电子邮件地址的方式一致的方式运行。用户代理应允许用户将 设置为空字符串。用户代理不得允许用户将 U+000A LINE FEED (LF) 或 U+000D CARRIAGE RETURN (CR) 字符插入到 中。用户代理可能会为显示和编辑转换 ;特别是,用户代理应将 的域标签中的 punycode 转换为显示中的 IDN,反之亦然。

约束验证:当用户界面表示用户代理无法转换为 punycode 的输入时,该控件 存在错误输入

如果指定 value 属性且该属性不为空,则该属性的值必须是单个 有效电子邮件地址

值清理算法 如下所示:从 删除换行符,然后从 删除开头和结尾的 ASCII 空格

约束验证:当元素的 既不是空字符串,也不是单个 有效电子邮件地址 时,该元素 存在类型不匹配

当在元素上指定 multiple 属性时

input 元素 表示 用于添加、删除和编辑元素的 s 中给出的电子邮件地址的控件。

如果元素是 可变的,用户代理应允许用户添加、删除和编辑其 所代表的电子邮件地址。用户代理可以允许用户将 s 列表中的任何单个值设置为不是 有效电子邮件地址 的字符串,但不得允许用户将任何单个值设置为包含 U+002C COMMA (,)、U+000A LINE FEED (LF) 或 U+000D CARRIAGE RETURN (CR) 字符的字符串。用户代理应允许用户删除元素的 中的所有地址。用户代理可能会为显示和编辑转换 ;特别是,用户代理应将 的域标签中的 punycode 转换为显示中的 IDN,反之亦然。

约束验证:当用户界面描述了一个单个值包含 U+002C COMMA (,) 或表示用户代理无法转换为 punycode 的输入的情况时,该控件 存在错误输入

每当用户更改元素的 s 时,用户代理必须运行以下步骤

  1. latest values 为元素的 s 的副本。

  2. latest values 中的每个值 删除开头和结尾的 ASCII 空格

  3. 令元素的 为连接 latest values 中所有值的结果,使用单个 U+002C COMMA 字符 (,) 将每个值与下一个值分隔开,并保持列表的顺序。

如果指定 value 属性,则该属性的值必须是 有效电子邮件地址列表

值清理算法 如下所示:

  1. 使用元素的 按逗号分隔从每个生成的标记(如果有)中删除开头和结尾的 ASCII 空格,并令元素的 为(可能为空的)生成的(可能为空的)标记列表,并保持原始顺序。

  2. 令元素的 为连接元素的 的结果,使用单个 U+002C COMMA 字符 (,) 将每个值与下一个值分隔开,并保持列表的顺序。

约束验证:当元素的 不是 有效电子邮件地址列表 时,该元素 存在类型不匹配

当设置或删除 multiple 属性时,用户代理必须运行 值清理算法

有效电子邮件地址 是与以下 ABNF 的 email 产生式匹配的字符串,其字符集为 Unicode。此 ABNF 实现了 RFC 1123 中描述的扩展。 [ABNF] [RFC5322] [RFC1034] [RFC1123]

email         = 1*( atext / "." ) "@" label *( "." label )
label         = let-dig [ [ ldh-str ] let-dig ]  ; limited to a length of 63 characters by RFC 1034 section 3.5
atext         = < as defined in RFC 5322 section 3.2.3 >
let-dig       = < as defined in RFC 1034 section 3.5 >
ldh-str       = < as defined in RFC 1034 section 3.5 >

此要求是对 RFC 5322 的 故意违反,RFC 5322 定义了电子邮件地址的语法,该语法既过于严格(在 "@" 字符之前),又过于含糊(在 "@" 字符之后),又过于宽松(允许以大多数用户不熟悉的方式使用注释、空格字符和引号字符串),因此在实践中无法使用。

以下与 JavaScript 和 Perl 兼容的正则表达式是上述定义的实现。

/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/

有效电子邮件地址列表一组逗号分隔的标记,其中每个标记本身都是一个 有效电子邮件地址。为了从 有效电子邮件地址列表 中获取标记列表,实现必须 按逗号分隔字符串

以下常见的 input 元素内容属性、IDL 属性和方法 适用于 该元素:autocompletedirnamelistmaxlengthminlengthmultiplepatternplaceholderreadonlyrequiredsize 内容属性;listvalue IDL 属性;select() 方法。

value IDL 属性处于 value 模式。

inputchange 事件 适用于

以下内容属性不得指定,并且 不适用于 该元素:acceptaltcheckedformactionformenctypeformmethodformnovalidateformtargetheightmaxminpopovertargetpopovertargetactionsrcstepwidth

以下 IDL 属性和方法不适用于该元素:checkedfilesselectionStartselectionEndselectionDirectionvalueAsDatevalueAsNumber IDL 属性;setRangeText()setSelectionRange()stepDown()stepUp() 方法。

4.10.5.1.6 密码 状态 (type=password)

元素/输入/密码

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera2+Edge79+
Edge (Legacy)12+Internet Explorer2+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

当一个 input 元素的 type 属性处于 密码 状态时,本节中的规则适用。

input 元素表示一个针对该元素的 的单行纯文本编辑控件。用户代理应该遮蔽该值,以便除了用户以外的其他人无法看到它。

如果该元素是 可变的,它的 应该可以由用户编辑。用户代理不得允许用户在 中插入 U+000A 换行符 (LF) 或 U+000D 回车符 (CR) 字符。

如果指定了 value 属性,则其值必须不包含 U+000A 换行符 (LF) 或 U+000D 回车符 (CR) 字符。

值清理算法 如下移除换行符 来自

以下常见 input 元素内容属性、IDL 属性和方法适用于该元素:autocompletedirnamemaxlengthminlengthpatternplaceholderreadonlyrequiredsize 内容属性;selectionStartselectionEndselectionDirectionvalue IDL 属性;select()setRangeText()setSelectionRange() 方法。

value IDL 属性处于模式 value

inputchange 事件适用

以下内容属性不得指定,并且不适用于该元素:acceptaltcheckedformactionformenctypeformmethodformnovalidateformtargetheightlistmaxminmultiplepopovertargetpopovertargetactionsrcstepwidth

以下 IDL 属性和方法不适用于该元素:checkedfileslistvalueAsDatevalueAsNumber IDL 属性;stepDown()stepUp() 方法。

4.10.5.1.7 日期 状态 (type=date)

元素/输入/日期

所有当前引擎都支持。

Firefox57+Safari14.1+Chrome20+
Opera11+Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS5+Chrome Android?WebView Android?Samsung Internet?Opera Android11+

当一个 input 元素的 type 属性处于 日期 状态时,本节中的规则适用。

input 元素表示一个用于将该元素的 设置为一个表示特定 日期 的字符串的控件。

如果该元素是 可变的,用户代理应该允许用户更改其 所表示的 日期,该值可通过从该值 解析日期 获得。用户代理不得允许用户将 设置为一个非空字符串,该字符串不是 有效的日期字符串。如果用户代理提供了用于选择 日期 的用户界面,则 必须设置为一个表示用户选择的 有效的日期字符串。用户代理应该允许用户将 设置为空字符串。

约束验证:当用户界面描述用户代理无法转换为 有效的日期字符串 的输入时,该控件 存在错误输入

请参阅 引言部分,了解有关日期、时间和数字表单控件的输入格式和提交格式之间区别的讨论,以及有关表单控件本地化的 实现说明

如果指定了 value 属性且不为空,则其值必须是 有效的日期字符串

值清理算法 如下:如果该元素的 不是 有效的日期字符串,则将其设置为空字符串。

如果指定了 min 属性,则其值必须是 有效的日期字符串。如果指定了 max 属性,则其值必须是 有效的日期字符串

step 属性以天为单位表示。该 步长比例因子 为 86,400,000(将天数转换为毫秒,如其他算法中所用)。该 默认步长 为 1 天。

当该元素 存在步长不匹配 时,用户代理可能会将该元素的 舍入到最接近的 日期,对于该日期,该元素不会 存在步长不匹配

将字符串转换为数字的算法,给定一个字符串 input,如下所示:如果从 input 解析日期 导致错误,则返回错误;否则,返回从 1970-01-01 早晨 UTC 零时(由值“1970-01-01T00:00:00.0Z”表示的时间)到解析的 日期 早晨 UTC 零时(忽略闰秒)经过的毫秒数。

给定一个数字 input将数字转换为字符串的算法 如下所示: 返回一个 有效的日期字符串,该字符串表示在 UTC 时区中,自 1970-01-01 凌晨(“1970-01-01T00:00:00.0Z” 所表示的时间)起,经过 input 毫秒后的 日期

给定一个字符串 input将字符串转换为 Date 对象的算法 如下所示: 如果从 input解析日期 导致错误,则返回错误;否则,返回一个 新的 Date 对象,该对象表示解析后的 日期 凌晨的 UTC 时间。

给定一个 Date 对象 inputDate 对象转换为字符串的算法 如下所示: 返回一个 有效的日期字符串,该字符串表示 input 在 UTC 时区中所表示时间的 日期

Date 状态(以及后续部分描述的其他日期和时间相关状态)不适用于无法确定相对于当代日历的精确日期和时间的输入值。例如,它不适用于输入诸如“大爆炸后一毫秒”、“侏罗纪早期”或“公元前 250 年左右的冬季”之类的时间。

对于在格里高利历引入之前输入的日期,作者建议不要使用 Date 状态(以及后续部分描述的其他日期和时间相关状态),因为用户代理不需要支持将早期时期的日期和时间转换为格里高利历,而要求用户手动执行此操作会给用户带来过多的负担。(格里高利历的逐步采用是一个复杂的过程,它在不同的国家/地区发生在不同的时间,从 16 世纪中期到 20 世纪初不等。)相反,作者建议使用 select 元素和带有 Number 状态的 input 元素来提供细粒度的输入控件。

以下常见的 input 元素内容属性、IDL 属性和方法 应用 于该元素:autocompletelistmaxminreadonlyrequiredstep 内容属性;listvaluevalueAsDatevalueAsNumber IDL 属性;select()stepDown()stepUp() 方法。

value IDL 属性处于 value 模式。

inputchange 事件 应用

以下内容属性不能被指定,并且 不应用 于该元素:acceptaltcheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightmaxlengthminlengthmultiplepatternplaceholderpopovertargetpopovertargetactionsizesrcwidth

以下 IDL 属性和方法 不应用 于该元素:checkedselectionStartselectionEndselectionDirection IDL 属性;setRangeText()setSelectionRange() 方法。

4.10.5.1.8 Month 状态 (type=month)

Element/input/month

所有当前引擎都支持。

FirefoxNoSafariNoChrome20+
Opera11+Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android18+Safari iOSYesChrome Android?WebView Android?Samsung Internet?Opera Android?

当一个 input 元素的 type 属性处于 Month 状态时,本节中的规则适用。

input 元素 表示 一个控件,用于将该元素的 value 设置为一个字符串,该字符串表示一个特定的 月份

如果该元素是 可变的,用户代理应允许用户更改其 value 所表示的 月份,方法是通过从该值中 解析月份 来获得。用户代理不得允许用户将 value 设置为非空字符串,该字符串不是 有效的月份字符串。如果用户代理提供了用于选择 月份 的用户界面,那么 value 必须设置为一个 有效的月份字符串,该字符串表示用户的选择。用户代理应允许用户将 value 设置为空字符串。

约束验证: 当用户界面描述了用户代理无法转换为 有效的月份字符串 的输入时,该控件 存在输入错误

请参阅 引言部分,了解有关日期、时间和数字表单控件的输入格式和提交格式之间区别的讨论,以及有关表单控件本地化的 实现说明

value 属性,如果已指定且不为空,其值必须是 有效的月份字符串

值清理算法 如下所示: 如果该元素的 value 不是 有效的月份字符串,则将其设置为空字符串。

min 属性,如果已指定,其值必须是 有效的月份字符串max 属性,如果已指定,其值必须是 有效的月份字符串

step 属性以月份表示。步长比例因子 为 1(不需要转换,因为算法使用月份)。默认步长 为 1 个月。

当该元素 存在步长不匹配 时,用户代理可以将该元素的 value 四舍五入到最接近的 月份,对于该月份,该元素不会 存在步长不匹配

给定一个字符串 input将字符串转换为数字的算法 如下所示: 如果从 input解析月份 导致错误,则返回错误;否则,返回解析后的 月份 与 1970 年 1 月之间的月份数。

给定一个数字 input将数字转换为字符串的算法 如下所示: 返回一个 有效的月份字符串,该字符串表示与 1970 年 1 月之间的月份数为 input月份

给定一个字符串 input将字符串转换为 Date 对象的算法 如下所示:如果从 input解析月份 出现错误,则返回错误;否则,返回 一个新的 Date 对象,表示解析的 月份 第一天的凌晨 UTC 时间。

给定一个 Date 对象 inputDate 对象转换为字符串的算法 如下所示:返回一个 有效的月份字符串,表示 input 所代表的时间在 UTC 时区中的 月份

以下常见的 input 元素内容属性、IDL 属性和方法 应用于 该元素:autocompletelistmaxminreadonlyrequiredstep 内容属性;listvaluevalueAsDatevalueAsNumber IDL 属性;select()stepDown()stepUp() 方法。

IDL 属性 value 处于模式 value

inputchange 事件 应用

以下内容属性不得指定,并且 不适用于 该元素:acceptaltcheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightmaxlengthminlengthmultiplepatternplaceholderpopovertargetpopovertargetactionsizesrcwidth

以下 IDL 属性和方法 不适用于 该元素:checkedfilesselectionStartselectionEndselectionDirection IDL 属性;setRangeText()setSelectionRange() 方法。

4.10.5.1.9 状态 (type=week)

元素/输入/周

FirefoxNoSafariNoChrome20+
Opera11+Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android18+Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

input 元素的 type 属性处于 状态时,本节中的规则适用。

input 元素 表示 用于将元素的 设置为表示特定 的字符串的控件。

如果该元素是 可变的,则用户代理应允许用户更改其 所代表的 ,方法是 从该值中解析周。用户代理不得允许用户将 设置为非空字符串,该字符串不是 有效的周字符串。如果用户代理提供了用于选择 的用户界面,则 必须设置为表示用户选择的 有效的周字符串。用户代理应允许用户将 设置为空字符串。

约束验证:当用户界面描述了用户代理无法转换为 有效的周字符串 的输入时,该控件 遭受不良输入

请参阅 引言部分,了解有关日期、时间和数字表单控件的输入格式和提交格式之间区别的讨论,以及有关表单控件本地化的 实现说明

value 属性(如果指定且不为空)的值必须是 有效的周字符串

值清理算法 如下所示:如果元素的 不是 有效的周字符串,则将其设置为空字符串。

min 属性(如果指定)的值必须是 有效的周字符串。如果指定了 max 属性,则其值必须是 有效的周字符串

step 属性以周为单位表示。 步长比例因子 为 604,800,000(将周转换为毫秒,如其他算法中所用)。 默认步长 为 1 周。 默认步长基数 为 -259,200,000(1970-W01 周的开始时间)。

当元素 遭受步长不匹配 时,用户代理可以将元素的 四舍五入到最近的 ,对于该周,该元素不会 遭受步长不匹配

给定一个字符串 input将字符串转换为数字的算法 如下所示:如果从 input解析周字符串 出现错误,则返回错误;否则,返回从 1970-01-01 凌晨 UTC 时间(由值“1970-01-01T00:00:00.0Z”表示的时间)到解析的 的星期一的凌晨 UTC 时间(忽略闰秒)所经过的毫秒数。

给定一个数字 input将数字转换为字符串的算法 如下所示:返回一个 有效的周字符串,表示在 UTC 中,该周是 1970-01-01 凌晨 UTC 时间(由值“1970-01-01T00:00:00.0Z”表示的时间)之后的 input 毫秒。

给定一个字符串 input将字符串转换为 Date 对象的算法 如下所示:如果从 input解析周 出现错误,则返回错误;否则,返回 一个新的 Date 对象,表示解析的 的星期一的凌晨 UTC 时间。

给定一个 Date 对象 inputDate 对象转换为字符串的算法 如下所示:返回一个 有效的周字符串,表示 input 所代表的时间在 UTC 时区中的

以下是一些适用于 input 元素的常见内容属性、IDL 属性和方法:autocompletelistmaxminreadonlyrequiredstep 内容属性;listvaluevalueAsDatevalueAsNumber IDL 属性;select()stepDown()stepUp() 方法。

value IDL 属性处于 value 模式。

inputchange 事件 适用

以下内容属性不得指定,也不 适用 于该元素:acceptaltcheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightmaxlengthminlengthmultiplepatternplaceholderpopovertargetpopovertargetactionsizesrcwidth

以下 IDL 属性和方法 不适用 于该元素:checkedfilesselectionStartselectionEndselectionDirection IDL 属性;setRangeText()setSelectionRange() 方法。

4.10.5.1.10 时间 状态 (type=time)

元素/input/time

所有当前引擎都支持。

Firefox57+Safari14.1+Chrome20+
Opera10+Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS5+Chrome Android?WebView Android?Samsung Internet?Opera Android10.1+

input 元素的 type 属性处于 时间 状态时,本节中的规则适用。

input 元素 表示 一个用于设置元素 为表示特定 时间 的字符串的控件。

如果该元素是 可变的,则用户代理应允许用户更改其 所表示的 时间,该值可通过 解析时间 从中获取。用户代理不得允许用户将 设置为不是 有效时间字符串 的非空字符串。如果用户代理提供了用于选择 时间 的用户界面,则 必须设置为表示用户选择的 有效时间字符串。用户代理应允许用户将 设置为空字符串。

约束验证:当用户界面描述用户代理无法转换为 有效时间字符串 的输入时,该控件为 存在输入错误

请参阅 引言部分,了解有关日期、时间和数字表单控件的输入格式和提交格式之间区别的讨论,以及有关表单控件本地化的 实现说明

如果指定了 value 属性且不为空,则其值必须为 有效时间字符串

值清理算法 如下:如果元素的 不是 有效时间字符串,则将其设置为空字符串。

该表单控件 具有周期性域

如果指定了 min 属性,则其值必须为 有效时间字符串。如果指定了 max 属性,则其值必须为 有效时间字符串

step 属性以秒为单位表示。 步长比例因子 为 1000(将秒转换为毫秒,如其他算法中所用)。 默认步长 为 60 秒。

当元素 存在步长不匹配 时,用户代理可能会将元素的 四舍五入到最接近的 时间,对于该时间元素不会 存在步长不匹配

将字符串转换为数字的算法,给定字符串 input,如下:如果 input 解析时间 导致错误,则返回错误;否则,返回从午夜到解析的 时间(在没有时间变化的一天)经过的毫秒数。

将数字转换为字符串的算法,给定数字 input,如下:返回表示从午夜起经过 input 毫秒的时间的 有效时间字符串(在没有时间变化的一天)。

将字符串转换为 Date 对象的算法,给定字符串 input,如下:如果 input 解析时间 导致错误,则返回错误;否则,返回 一个新的 Date 对象,表示 1970-01-01 UTC 的解析的 时间

Date 对象转换为字符串的算法,给定 Date 对象 input,如下:返回表示 input 所表示的 UTC 时间 组件的 有效时间字符串

以下是一些适用于 input 元素的常见内容属性、IDL 属性和方法:autocompletelistmaxminreadonlyrequiredstep 内容属性;listvaluevalueAsDatevalueAsNumber IDL 属性;select()stepDown()stepUp() 方法。

value IDL 属性处于 value 模式。

inputchange 事件 适用

以下内容属性不得指定,也不适用于该元素:acceptaltcheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightmaxlengthminlengthmultiplepatternplaceholderpopovertargetpopovertargetactionsizesrcwidth

以下 IDL 属性和方法不适用于该元素:checkedfilesselectionStartselectionEndselectionDirection IDL 属性;setRangeText()setSelectionRange() 方法。

4.10.5.1.11 本地日期和时间 状态 (type=datetime-local)

元素/输入/datetime-local

所有当前引擎都支持。

Firefox93+Safari14.1+Chrome20+
Opera11+Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS5+Chrome Android?WebView Android?Samsung Internet?Opera Android11+

input 元素的 type 属性处于 本地日期和时间 状态时,本节中的规则适用。

input 元素表示 用于设置元素的 的控件,该值是一个字符串,表示本地日期和时间,不带时区偏移信息。

如果该元素是 可变的,则用户代理应允许用户更改其 所表示的 日期和时间,方法是解析日期和时间。用户代理不得允许用户将 设置为非空字符串,该字符串不是 有效的规范化的本地日期和时间字符串。如果用户代理提供一个用户界面用于选择 本地日期和时间,则 必须设置为 有效的规范化的本地日期和时间字符串,该字符串表示用户选择。用户代理应允许用户将 设置为空字符串。

约束验证:虽然用户界面描述了用户代理无法转换为 有效的规范化的本地日期和时间字符串 的输入,但控件存在错误输入

请参阅 引言部分,了解有关日期、时间和数字表单控件的输入格式和提交格式之间区别的讨论,以及有关表单控件本地化的 实现说明

value 属性(如果已指定且不为空)必须具有一个 有效的本地日期和时间字符串 的值。

值清理算法 如下:如果元素的 有效的本地日期和时间字符串,则将其设置为表示同一日期和时间的 有效的规范化的本地日期和时间字符串;否则,将其设置为空字符串。

min 属性(如果已指定)必须具有一个 有效的本地日期和时间字符串 的值。该 max 属性(如果已指定)必须具有一个 有效的本地日期和时间字符串 的值。

step 属性以秒为单位表示。该 步进比例因子 为 1000(将秒转换为毫秒,如其他算法中使用)。该 默认步进 为 60 秒。

当元素存在步进不匹配时,用户代理可以将元素的 四舍五入到最近的 本地日期和时间,这样元素就不会存在步进不匹配

将字符串转换为数字的算法,给定字符串 input,如下:如果解析日期和时间input 中结果是错误,则返回错误;否则,返回从 1970-01-01 上午午夜(由值 "1970-01-01T00:00:00.0" 表示的时间)到解析的 本地日期和时间 的经过毫秒数,忽略闰秒。

将数字转换为字符串的算法,给定数字 input,如下:返回一个 有效的规范化的本地日期和时间字符串,该字符串表示 1970-01-01 上午午夜(由值 "1970-01-01T00:00:00.0" 表示的时间)之后的 input 毫秒的日期和时间。

请参阅有关历史日期的说明,位于 日期 状态部分。

以下常见 input 元素内容属性、IDL 属性和方法适用于 该元素:autocompletelistmaxminreadonlyrequiredstep 内容属性;listvaluevalueAsNumber IDL 属性;select()stepDown()stepUp() 方法。

value IDL 属性处于模式 value

inputchange 事件 适用于

以下内容属性不得指定,且不适用于该元素:acceptaltcheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightmaxlengthminlengthmultiplepatternplaceholderpopovertargetpopovertargetactionsizesrc,和width

以下 IDL 属性和方法不适用于该元素:checkedfilesselectionStartselectionEndselectionDirection,和valueAsDate IDL 属性;setRangeText(),和setSelectionRange() 方法。

以下示例展示了航班预订应用程序的一部分。该应用程序使用一个input元素,其type属性设置为datetime-local,然后它会根据所选机场的时区来解释给定的日期和时间。

<fieldset>
 <legend>Destination</legend>
 <p><label>Airport: <input type=text name=to list=airports></label></p>
 <p><label>Departure time: <input type=datetime-local name=totime step=3600></label></p>
</fieldset>
<datalist id=airports>
 <option value=ATL label="Atlanta">
 <option value=MEM label="Memphis">
 <option value=LHR label="London Heathrow">
 <option value=LAX label="Los Angeles">
 <option value=FRA label="Frankfurt">
</datalist>
4.10.5.1.12 数字 状态(type=number

元素/输入/数字

所有当前引擎都支持。

Firefox29+Safari5.1+Chrome7+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

input元素的type属性处于数字状态时,本节中的规则适用。

input元素表示一个用于将元素的value设置为表示数字的字符串的控件。

如果该元素是可变的,用户代理应该允许用户更改其value所表示的数字,该数字是通过将浮点数解析规则应用于它得到的。用户代理不得允许用户将value设置为非空字符串,该字符串不是一个有效的浮点数。如果用户代理提供了一个用于选择数字的用户界面,则value必须设置为用户选择所表示数字的浮点数最佳表示。用户代理应该允许用户将value设置为空字符串。

**约束验证**:当用户界面描述了用户代理无法转换为有效的浮点数的输入时,该控件处于输入错误状态

本规范没有定义用户代理应该使用什么用户界面;鼓励用户代理供应商考虑什么最符合其用户的需求。例如,在波斯语或阿拉伯语市场中的用户代理可能支持波斯语和阿拉伯语数字输入(将其转换为如上所述提交所需的格式)。类似地,为罗马人设计的用户代理可能以罗马数字而不是十进制数字显示值;或者(更现实地),为法国市场设计的用户代理可能以千分位数之间的撇号和十进制数之前的逗号显示值,并允许用户以这种方式输入值,在内部将其转换为上面描述的提交格式。

如果指定了value属性且该属性不为空,则该属性的值必须是一个有效的浮点数

**值清理算法如下所示**:如果元素的value不是一个有效的浮点数,则将其设置为空字符串。

如果指定了min属性,则该属性的值必须是一个有效的浮点数。如果指定了max属性,则该属性的值必须是一个有效的浮点数

步长比例因子为 1。默认步长为 1(仅允许用户选择整数,除非步长基数具有非整数值)。

当元素处于步长不匹配状态时,用户代理可以将元素的value四舍五入到最接近的数字,对于该数字,元素不会处于步长不匹配状态。如果有两个这样的数字,鼓励用户代理选择最接近正无穷大的那个。

**将字符串转换为数字的算法,给定一个字符串input,如下所示**:如果将浮点数解析规则应用于input会导致错误,则返回错误;否则,返回结果数字。

**将数字转换为字符串的算法,给定一个数字input,如下所示**:返回一个有效的浮点数,它表示input

以下常见input元素内容属性、IDL 属性和方法适用于该元素:autocompletelistmaxminplaceholderreadonlyrequired,和step 内容属性;listvalue,和valueAsNumber IDL 属性;select()stepDown(),和stepUp() 方法。

value IDL 属性处于模式value

inputchange事件适用于

以下内容属性不得指定,且不适用于该元素:acceptaltcheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightmaxlengthminlengthmultiplepatternpopovertargetpopovertargetactionsizesrc,和width

以下 IDL 属性和方法不适用于该元素:checkedfilesselectionStartselectionEndselectionDirectionvalueAsDate IDL 属性;setRangeText()setSelectionRange() 方法。

以下是一个使用数字输入控件的示例。

<label>How much do you want to charge? $<input type=number min=0 step=0.01 name=price></label>

如上所述,用户代理可能会支持用户本地格式的数字输入,并将这些输入转换为提交所需的格式,如上所述。这可能包括处理分组分隔符(如“872,000,000,000”)和各种小数分隔符(如“3,99”与“3.99”)或使用本地数字(如阿拉伯语、梵文、波斯语和泰语中的数字)。

type=number 状态不适用于仅由数字组成的输入,但严格来说不是数字。例如,它不适合信用卡号或美国邮政编码。确定是否使用type=number 的一个简单方法是考虑输入控件是否有意义地使用旋钮界面(例如,带有“向上”和“向下”箭头)。信用卡号码的最后一位数字错一位不是小错误,它和所有数字都错误一样错误。因此,用户不应使用“向上”和“向下”按钮来选择信用卡号码。当旋钮界面不合适时,type=text 可能是正确选择(可能带有一个 inputmodepattern 属性)。

4.10.5.1.13 范围 状态 (type=range)

元素/输入/范围

所有当前引擎都支持。

Firefox23+Safari3.1+Chrome4+
Opera11+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android52+Safari iOS5+Chrome Android57+WebView Android4.4+Samsung Internet?Opera Android11+

input 元素的 type 属性处于 范围 状态时,本节中的规则适用。

input 元素 表示一个用于将元素的 value 设置为表示数字的字符串的控件,但前提是确切的值不重要,允许 UA 提供比 数字 状态更简单的界面。

如果元素是 可变 的,用户代理应允许用户更改其 value 所表示的数字,该数字是通过将 解析浮点数值的规则 应用于它得到的。用户代理不得允许用户将 value 设置为不是 有效浮点数 的字符串。如果用户代理提供了一个用于选择数字的用户界面,那么 value 必须设置为 用户选择的数字作为浮点数的最佳表示。用户代理不得允许用户将 value 设置为空字符串。

约束验证:虽然用户界面描述了用户代理无法转换为 有效浮点数 的输入,但控件是 存在错误输入

如果指定了 value 属性,则其值必须为 有效浮点数

值清理算法 如下:如果元素的 value 不是 有效浮点数,则将其设置为 作为浮点数的最佳表示,即 默认值

默认值最小值 加上 最小值最大值 之差的一半,除非 最大值 小于 最小值,在这种情况下,默认值最小值

当元素 出现下溢 时,用户代理必须将元素的 value 设置为 作为浮点数的最佳表示,即 最小值

当元素 出现上溢 时,如果 最大值 不小于 最小值,则用户代理必须将元素的 value 设置为 有效浮点数,该浮点数表示 最大值

当元素 出现步长不匹配 时,用户代理必须将元素的 value 四舍五入到最接近的数字,对于该数字,元素不会 出现步长不匹配,并且该数字大于或等于 最小值,以及如果 最大值 不小于 最小值,则该数字小于或等于 最大值,如果有数字符合这些约束。如果两个数字符合这些约束,则用户代理必须使用最接近正无穷大的那个。

例如,标记 <input type="range" min=0 max=100 step=20 value=50> 会生成一个范围控件,其初始值为 60。

以下是一个使用带有 list 属性的自动完成列表的范围控件示例。如果在控件的整个范围内有特别重要的值,例如预先配置的光照级别或范围控件中用作速度控制的典型速度限制,这将很有用。以下标记片段

<input type="range" min="-100" max="100" value="0" step="10" name="power" list="powers">
<datalist id="powers">
<option value="0">
<option value="-30">
<option value="30">
 <option value="++50">
</datalist>

... 应用以下样式表

input { writing-mode: vertical-lr; height: 75px; width: 49px; background: #D5CCBB; color: black; }

... 可能渲染为

A vertical slider control whose primary color is black and whose background color is beige, with the slider having five tick marks, one long one at each extremity, and three short ones clustered around the midpoint.

请注意,UA 如何从样式表指定的 height 和 width 属性的比率确定控件的方向。颜色也是从样式表中推导出来的。但是,刻度线是从标记中推导出来的。特别是,step 属性没有影响刻度线的位置,UA 决定只使用作者指定的完成值,然后在两端添加更长的刻度线。

还请注意,无效值 ++50 被忽略了。

再举一个例子,考虑以下标记片段

<input name=x type=range min=100 max=700 step=9.09090909 value=509.090909>

用户代理可以用各种方式显示,例如

As a dial.

或者,或者,例如

As a long horizontal slider with tick marks.

用户代理可以根据样式表中给出的尺寸选择要显示的方式。这将允许它保持刻度线的相同分辨率,尽管宽度有所不同。

最后,以下是一个带有两个标记值的范围控件示例

<input type="range" name="a" list="a-values">
<datalist id="a-values">
<option value="10" label="Low">
<option value="90" label="High">
</datalist>

使用使控件垂直绘制的样式,它可能看起来如下

A vertical slider control with two tick marks, one near the top labeled 'High', and one near the bottom labeled 'Low'.

在这种状态下,即使在用户输入期间,也会强制执行范围和步长约束,并且没有办法将值设置为为空字符串。

如果指定了 min 属性,则其值必须为 有效浮点数默认最小值 为 0。如果指定了 max 属性,则其值必须为 有效浮点数默认最大值 为 100。

步长比例因子 为 1。默认步长 为 1(仅允许整数,除非 min 属性具有非整数值)。

将字符串转换为数字的算法,给定字符串 input,如下所示:如果将 解析浮点数值的规则 应用于 input 会导致错误,则返回错误;否则,返回结果数字。

将数字转换为字符串的算法,给定数字 input,如下所示:返回 作为浮点数的最佳表示,即 input

以下通用输入 元素内容属性、IDL 属性和方法应用于该元素:autocompletelistmaxmin,和step 内容属性;listvalue,和valueAsNumber IDL 属性;stepDown()stepUp() 方法。

value IDL 属性处于模式value

inputchange 事件应用

以下内容属性不得指定,并且不适用于该元素:acceptaltcheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightmaxlengthminlengthmultiplepatternplaceholderpopovertargetpopovertargetactionreadonlyrequiredsizesrc,和width

以下 IDL 属性和方法不适用于该元素:checkedfilesselectionStartselectionEndselectionDirection,和valueAsDate IDL 属性;select()setRangeText(),和setSelectionRange() 方法。

4.10.5.1.14 颜色 状态 (type=color)

元素/输入/颜色

所有当前引擎都支持。

Firefox29+Safari12.1+Chrome20+
Opera12+Edge79+
Edge (Legacy)14+Internet Explorer
Firefox Android🔰 27+Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12+

输入 元素的type 属性处于颜色 状态时,本节中的规则适用。

输入 元素表示一个颜色选择器,用于将元素的设置为表示简单颜色的字符串。

在此状态下,始终会选择一种颜色,并且无法将值设置为空字符串。

如果该元素是可变的,则用户代理应允许用户更改其所表示的颜色,该值可通过对解析简单颜色值的规则应用于该值来获得。用户代理不得允许用户将设置为不是有效的 lowercase 简单颜色的字符串。如果用户代理为选择颜色提供了用户界面,则必须设置为使用序列化简单颜色值的规则对用户的选择进行处理的结果。用户代理不得允许用户将设置为空字符串。

此类元素element输入激活行为显示选择器(如果适用),用于element

约束验证:当用户界面描述用户代理无法转换为有效的 lowercase 简单颜色的输入时,该控件处于错误输入状态

value 属性(如果指定且不为空)必须具有一个有效的简单颜色值。

值清理算法如下:如果元素的有效的简单颜色,则将其设置为元素的转换为 ASCII lowercase;否则,将其设置为字符串 "#000000"。

以下通用输入 元素内容属性和 IDL 属性应用于该元素:autocompletelist 内容属性;listvalue IDL 属性;select() 方法。

value IDL 属性处于模式value

inputchange 事件应用

以下内容属性不得指定,并且不适用于该元素:acceptaltcheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightmaxmaxlengthminminlengthmultiplepatternplaceholderpopovertargetpopovertargetactionreadonlyrequiredsizesrcstep,和width

以下 IDL 属性和方法不适用于该元素:checkedfilesselectionStartselectionEndselectionDirectionvalueAsDatevalueAsNumber IDL 属性;setRangeText()setSelectionRange()stepDown(),和stepUp() 方法。

4.10.5.1.15 复选框 状态 (type=checkbox)

元素/输入/复选框

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

input 元素的 type 属性处于 复选框 状态时,本节中的规则适用。

input 元素 表示 一个双状态控件,它代表元素的 选中 状态。如果元素的 选中 状态为真,则控件表示正向选择,如果为假,则表示负向选择。如果元素的 indeterminate IDL 属性设置为 true,则控件的选择应被遮蔽,就像控件处于第三种不确定的状态一样。

该控件永远不是真正的三态控件,即使元素的 indeterminate IDL 属性设置为 true。该 indeterminate IDL 属性只提供第三种状态的外观。

输入激活行为 是执行以下步骤

  1. 如果该元素不是 已连接,则返回。

  2. 触发事件,事件名为 input,在元素上触发,并设置 bubblescomposed 属性为 true。

  3. 触发事件,事件名为 change,在元素上触发,并设置 bubbles 属性为 true。

约束验证:如果该元素是 必需 并且它的 选中 状态为假,则该元素 正在被遗漏

input.indeterminate [ = value ]

当设置时,会覆盖 复选框 控件的渲染,使当前值不可见。

以下常见的 input 元素内容属性和 IDL 属性 适用 于该元素:checkedrequired 内容属性;checkedvalue IDL 属性。

value IDL 属性处于 默认/开启 模式。

inputchange 事件 适用

以下内容属性不得指定,也不 适用于 该元素:acceptaltautocompletedirnameformactionformenctypeformmethodformnovalidateformtargetheightlistmaxmaxlengthminminlengthmultiplepatternplaceholderpopovertargetpopovertargetactionreadonlysizesrcstepwidth

以下 IDL 属性和方法不 适用于 该元素:fileslistselectionStartselectionEndselectionDirectionvalueAsDatevalueAsNumber IDL 属性;select()setRangeText()setSelectionRange()stepDown()stepUp() 方法。

4.10.5.1.16 单选按钮 状态 (type=radio)

元素/input/radio

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

input 元素的 type 属性处于 单选按钮 状态时,本节中的规则适用。

input 元素 表示 一个控件,当与其他 input 元素一起使用时,会形成一个 单选按钮组,其中只有一个控件可以将其 选中 状态设置为 true。如果元素的 选中 状态为真,则控件表示该组中选中的控件,如果为假,则表示该组中未选中的控件。

包含 input 元素 a单选按钮组 还包含所有满足以下所有条件的其他 input 元素 b

一个 不得包含一个 input 元素,其 单选按钮组 仅包含该元素。

当发生以下任何现象时,如果元素的 选中 状态在发生后为 true,则同一 单选按钮组 中所有其他元素的 选中 状态必须设置为 false

输入激活行为 是执行以下步骤

  1. 如果该元素不是 已连接,则返回。

  2. 触发事件,事件名为 input,在元素上触发,并设置 bubblescomposed 属性为 true。

  3. 触发事件,事件名为 change,在 bubbles 属性初始化为 true 的元素上触发。

约束验证:如果 单选按钮组 中的某个元素是 必填 的,并且 单选按钮组 中所有 input 元素的 选中状态 都为 false,则该元素处于 缺失状态

以下示例出于某种原因指定了 puppers 既是 必填 的,又是 禁用的

<form>
 <p><label><input type="radio" name="dog-type" value="pupper" required disabled> Pupper</label>
 <p><label><input type="radio" name="dog-type" value="doggo"> Doggo</label>
 <p><button>Make your choice</button>
</form>

如果用户尝试在未先选择“Doggo”的情况下提交此表单,那么两个 input 元素都将处于 缺失状态,因为 单选按钮组 中的某个元素是 必填 的(即第一个元素),并且单选按钮组中的两个元素的 选中状态 都为 false。

另一方面,如果用户选择“Doggo”,然后提交表单,那么两个 input 元素都不会处于 缺失状态,因为虽然其中一个元素是 必填 的,但并非所有元素的 选中状态 都为 false。

如果 单选按钮组 中的任何单选按钮都没有选中,那么它们在界面中将最初都处于未选中状态,直到其中一个被选中(由用户或脚本选中)。

以下常见的 input 元素内容属性和 IDL 属性应用 于该元素:checkedrequired 内容属性;checkedvalue IDL 属性。

value IDL 属性处于 默认/开启 模式。

inputchange 事件应用

以下内容属性不得指定且不应用 于该元素:acceptaltautocompletedirnameformactionformenctypeformmethodformnovalidateformtargetheightlistmaxmaxlengthminminlengthmultiplepatternplaceholderpopovertargetpopovertargetactionreadonlysizesrcstep 以及 width

以下 IDL 属性和方法不应用 于该元素:fileslistselectionStartselectionEndselectionDirectionvalueAsDate 以及 valueAsNumber IDL 属性;select()setRangeText()setSelectionRange()stepDown() 以及 stepUp() 方法。

4.10.5.1.17 文件上传 状态 (type=file)

元素/input/file

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera11+Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android4+Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android11+

input 元素的 type 属性处于 文件上传 状态时,本节中的规则适用。

input 元素表示 一系列 选定的文件,每个文件都包含文件名、文件类型和文件体(文件内容)。

文件名不得包含 路径组件,即使用户选择了整个目录层次结构或来自不同目录的具有相同名称的多个文件。出于 文件上传 状态的目的,路径组件 是文件名中由 U+005C 反斜杠字符(\)字符分隔的那些部分。

除非 multiple 属性被设置,否则 选定的文件 列表中不得存在超过一个文件。

此类元素 element输入激活行为显示选择器(如果适用),用于 element

如果元素是 可变 的,用户代理应允许用户以其他方式更改列表上的文件,例如,通过拖放添加或删除文件。当用户这样做时,用户代理必须更新元素的文件选择

如果元素不是 可变 的,用户代理不得允许用户更改元素的选择。

更新元素的文件选择,对于元素 element

  1. 在元素任务队列中排队,在给定 element 和以下步骤的情况下,在用户交互任务源 上。

    1. 更新 element选定的文件,使其代表用户的选择。

    2. 触发事件,事件名为 input,在 input 元素上触发,bubblescomposed 属性初始化为 true。

    3. 触发事件,事件名为 change,在 input 元素上触发,bubbles 属性初始化为 true。

约束验证:如果元素是 必填 的,并且 选定的文件 列表为空,则该元素处于 缺失状态


属性/accept

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (传统)12+Internet Explorer6+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

元素/input#attr-accept

所有当前引擎都支持。

Firefox37+Safari11.1+Chrome26+
Opera15+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android37+Safari iOS11.3+Chrome Android26+WebView Android4.4+Samsung Internet1.5+Opera Android15+

accept 属性可以指定以向用户代理提供有关将接受哪些文件类型的提示。

如果指定了该属性,则该属性必须包含一个 以逗号分隔的令牌集,每个令牌必须与以下内容中的一个进行 ASCII 不区分大小写 匹配

字符串“audio/*
表示接受声音文件。
字符串“video/*
表示接受视频文件。
字符串“image/*
表示接受图像文件。
一个有效的 MIME 类型字符串,不带参数
表示接受指定类型的文件。
一个字符串,其第一个字符为 U+002E FULL STOP 字符 (.)
表示接受具有指定文件扩展名的文件。

这些标记不能是ASCII 不区分大小写 匹配任何其他标记(即不允许重复)。为了从属性中获取标记列表,用户代理必须以逗号分割属性值

用户代理可以使用此属性的值来显示比通用文件选择器更合适的用户界面。例如,给定值 image/*,用户代理可以为用户提供使用本地相机或从其照片收藏中选择照片的选项;给定值 audio/*,用户代理可以为用户提供使用耳机麦克风录制剪辑的选项。

用户代理应阻止用户选择未被这些标记中一个(或多个)接受的文件。

鼓励作者在查找特定格式的数据时指定任何 MIME 类型和任何相应的扩展名。

例如,考虑一个将 Microsoft Word 文档转换为 Open Document Format 文件的应用程序。由于 Microsoft Word 文档使用各种 MIME 类型和扩展名进行描述,因此该站点可以列出多个,如下所示

<input type="file" accept=".doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document">

在仅使用文件扩展名来描述文件类型的平台上,此处列出的扩展名可用于过滤允许的文档,而 MIME 类型可用于系统的类型注册表(将 MIME 类型映射到系统使用的扩展名),如果有的话,以确定其他允许的扩展名。类似地,在没有文件名或扩展名但使用 MIME 类型在内部标记文档的系统上,可以使用 MIME 类型选择允许的文件,而如果系统具有扩展名注册表,该表将已知扩展名映射到系统使用的 MIME 类型,则可以使用扩展名。

扩展名往往是模棱两可的(例如,有无数种使用“.dat”扩展名的格式,并且用户通常可以非常轻松地将他们的文件重命名为具有“.doc”扩展名,即使它们不是 Microsoft Word 文档),而 MIME 类型往往不可靠(例如,许多格式没有正式注册的类型,许多格式在实践中使用多种不同的 MIME 类型进行标记)。提醒作者,与往常一样,应谨慎处理从客户端接收的数据,因为它可能不是预期的格式,即使用户不是恶意的,并且用户代理完全服从了accept 属性的要求。

元素/input/file

由于历史原因,value IDL 属性在文件名之前添加字符串“C:\fakepath\”。一些旧版用户代理实际上包含了完整路径(这是一个安全漏洞)。因此,以向后兼容的方式从value IDL 属性中获取文件名并不容易。以下函数以适当地兼容的方式提取文件名

function extractFilename(path) {
  if (path.substr(0, 12) == "C:\\fakepath\\")
    return path.substr(12); // modern browser
  var x;
  x = path.lastIndexOf('/');
  if (x >= 0) // Unix-based path
    return path.substr(x+1);
  x = path.lastIndexOf('\\');
  if (x >= 0) // Windows-based path
    return path.substr(x+1);
  return path; // just the filename
}

这可以按如下方式使用

<p><input type=file name=image onchange="updateFilename(this.value)"></p>
<p>The name of the file you picked is: <span id="filename">(none)</span></p>
<script>
 function updateFilename(path) {
   var name = extractFilename(path);
   document.getElementById('filename').textContent = name;
 }
</script>

以下常见的input 元素内容属性和 IDL 属性应用于该元素:acceptmultiplerequired 内容属性;filesvalue IDL 属性;select() 方法。

value IDL 属性处于模式filename

inputchange 事件应用

以下内容属性不能被指定,并且不应用于该元素:altautocompletecheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightlistmaxmaxlengthminminlengthpatternpopovertargetpopovertargetactionplaceholderreadonlysizesrcstepwidth

元素的value 属性必须省略。

以下 IDL 属性和方法不应用于该元素:checkedlistselectionStartselectionEndselectionDirectionvalueAsDatevalueAsNumber IDL 属性;setRangeText()setSelectionRange()stepDown()stepUp() 方法。

4.10.5.1.18 提交按钮 状态 (type=submit)

元素/输入/提交

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

input 元素的type 属性处于提交按钮 状态时,本节中的规则适用。

(这是一个跟踪向量。)input 元素表示一个按钮,当激活时,它会提交表单。如果该元素具有value 属性,则按钮的标签必须是该属性的值;否则,它必须是实现定义的字符串,表示“提交”或类似的意思。该元素是按钮,特别是提交按钮

由于默认标签是实现定义的,并且按钮的宽度通常取决于按钮的标签,因此按钮的宽度可能会泄漏一些可指纹识别的信息。这些位可能与用户代理的身份和用户的区域设置高度相关。

给定event,该元素的输入激活行为如下

  1. 如果该元素没有表单所有者,则返回。

  2. 如果该元素的节点文档不是完全活跃的,则返回。

  3. 提交 该元素的表单所有者,来自该元素,userInvolvement 设置为event用户导航参与度

formactionformenctypeformmethodformnovalidateformtarget 属性是用于表单提交的属性

formnovalidate 属性可用于创建不会触发约束验证的提交按钮。

以下常见的input 元素内容属性和 IDL 属性应用于该元素:dirnameformactionformenctypeformmethodformnovalidateformtargetpopovertargetpopovertargetaction 内容属性;value IDL 属性。

value IDL 属性处于模式default

以下内容属性不得指定,也不适用于该元素:acceptaltautocompletecheckedheightlistmaxmaxlengthminminlengthmultiplepatternplaceholderreadonlyrequiredsizesrcstep 以及 width

以下 IDL 属性和方法也不适用于该元素:checkedfileslistselectionStartselectionEndselectionDirectionvalueAsDatevalueAsNumber IDL 属性;select()setRangeText()setSelectionRange()stepDown()stepUp() 方法。

以下事件不适用:inputchange

4.10.5.1.19 图像按钮 状态 (type=image)

Element/input/image

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

input 元素的 type 属性处于 图像按钮 状态时,本节中的规则适用。

input 元素 代表 用户可以选择坐标并提交表单的图像,或者代表用户可以提交表单的按钮。该元素是 按钮,具体来说是 提交按钮

该坐标通过发送两个元素条目发送到服务器,在表单提交期间,这些条目源自控件的名称,但将 ".x" 和 ".y" 附加到名称上,分别与坐标的 xy 分量对应。


Element/input#src

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

该图像由 src 属性给出。 src 属性必须存在,并且必须包含一个 有效的非空 URL,该 URL 可能包含空格,引用一个非交互式的、可选的动画图像资源,该资源既不是分页的,也不是脚本化的。

当以下任何事件发生时

然后,除非用户代理无法支持图像,或者它对图像的支持已被禁用,或者用户代理仅按需获取图像,或者 src 属性的值为空字符串,否则执行以下步骤

  1. url 为根据 src 属性的值相对于元素的 节点文档 编码解析 URL 的结果。

  2. 如果 url 失败,则返回。

  3. request 为一个新的 请求,其 URLurl客户端 为元素的 节点文档相关设置对象目标 为 "image",发起者类型 为 "input",凭据模式 为 "include",并且其 使用 URL 凭据标志 已设置。

  4. 获取 requestprocessResponseEndOfBody 设置为以下步骤,给定 响应 response

    1. 如果下载成功且图像 可用,则 在用户交互任务源上排队一个元素任务,该任务源给定 input 元素,以 触发名为 load 的事件,位于 input 元素上。

    2. 否则,如果获取过程在没有来自远程服务器的响应的情况下失败,或者已完成但图像不是有效或受支持的图像,则 在用户交互任务源上排队一个元素任务,该任务源给定 input 元素,以 触发名为 error 的事件,位于 input 元素上。

获取图像必须 延迟元素的节点文档的 load 事件,直到 任务(该任务由网络任务源排队,并在资源已获取后定义)已运行。

如果图像已成功获取,没有网络错误,并且图像的类型是受支持的图像类型,并且图像是该类型的有效图像,则该图像被称为 可用。如果在图像完全下载之前,此情况为真,则在获取图像期间,网络任务源排队的每个 任务 必须适当地更新图像的呈现。

用户代理应应用 图像嗅探规则 来确定图像的类型,其中图像的 相关 Content-Type 标头 提供了 官方类型。如果未应用这些规则,则图像的类型必须是图像的 相关 Content-Type 标头 中给出的类型。

用户代理不得使用 input 元素来支持非图像资源。用户代理不得运行嵌入在图像资源中的可执行代码。用户代理必须仅显示多页资源的第一页。用户代理不得允许该资源以交互方式运行,但应遵守该资源中的任何动画。


Element/input#alt

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

alt 属性 为无法使用图像的用户和用户代理提供按钮的文字标签。alt 属性必须存在,并且必须包含一个非空字符串,该字符串提供如果图像不可用,则等效按钮的适当标签。

input 元素支持 尺寸属性


如果 src 属性已设置,并且图像 可用 且用户代理配置为显示该图像,则该元素 代表 用于从 src 属性指定的图像中选择 坐标 的控件。在这种情况下,如果该元素 可变,则用户代理应允许用户选择此 坐标

否则,该元素 代表 一个提交按钮,其标签由 alt 属性的值给出。

元素的 输入激活行为 给定 event 如下所示

  1. 如果该元素没有 表单所有者,则返回。

  2. 如果该元素的 节点文档 不是 完全激活,则返回。

  3. 如果用户在明确选择坐标时激活了控件,则将该元素的 选定坐标 设置为该坐标。

    这只有在上面概述的条件下才有可能,当该元素 代表 用于选择此类坐标的控件时。即使这样,用户也可能在没有明确选择坐标的情况下激活控件。

  4. 提交 该元素的 表单所有者,来自该元素,其中 userInvolvement 设置为 event用户导航参与

该元素的 选定坐标 由一个 x 组件和一个 y 组件组成。它最初为 (0, 0)。坐标表示相对于元素图像边缘的位置,坐标空间的正 x 方向向右,正 y 方向向下。

x 组件必须是 有效整数,表示范围内的数字 x−(borderleft+paddingleft) ≤ xwidth+borderright+paddingright,其中 width 是图像的渲染宽度,borderleft 是图像左侧边框的宽度,paddingleft 是图像左侧填充的宽度,borderright 是图像右侧边框的宽度,paddingright 是图像右侧填充的宽度,所有尺寸都以 CSS 像素 为单位。

y 组件必须是 有效整数,表示范围内的数字 y−(bordertop+paddingtop) ≤ yheight+borderbottom+paddingbottom,其中 height 是图像的渲染高度,bordertop 是图像上方的边框宽度,paddingtop 是图像上方的填充宽度,borderbottom 是图像下方的边框宽度,paddingbottom 是图像下方的填充宽度,所有尺寸都以 CSS 像素 为单位。

如果缺少边框或填充,其宽度为零 CSS 像素


formactionformenctypeformmethodformnovalidateformtarget 属性是 用于表单提交的属性

image.width [ = value ]
image.height [ = value ]

这些属性返回图像的实际渲染尺寸,如果尺寸未知,则返回 0。

它们可以被设置,以更改相应的 content 属性。

以下公共 input 元素 content 属性和 IDL 属性 应用 于该元素:altformactionformenctypeformmethodformnovalidateformtargetheightpopovertargetpopovertargetactionsrcwidth content 属性;value IDL 属性。

value IDL 属性处于 默认 模式。

以下 content 属性不能被指定,并且 不应用 于该元素:acceptautocompletecheckeddirnamelistmaxmaxlengthminminlengthmultiplepatternplaceholderreadonlyrequiredsizestep

该元素的 value 属性必须被省略。

以下 IDL 属性和方法 不应用 于该元素:checkedfileslistselectionStartselectionEndselectionDirectionvalueAsDatevalueAsNumber IDL 属性;select()setRangeText()setSelectionRange()stepDown()stepUp() 方法。

inputchange 事件 不应用

此状态行为的许多方面类似于 img 元素的行为。鼓励读者阅读该部分,其中许多相同的要求都进行了更详细的描述。

考虑以下表单

<form action="process.cgi">
 <input type=image src=map.png name=where alt="Show location list">
</form>

如果用户在坐标 (127, 40) 处单击图像,则用于提交表单的 URL 将为 "process.cgi?where.x=127&where.y=40"。

(在这个例子中,假设对于看不到地图的用户,他们只能看到一个标记为 "显示位置列表" 的按钮,单击该按钮将导致服务器显示一个位置列表供用户选择,而不是地图。)

4.10.5.1.20 重置按钮 状态 (type=reset)

元素/输入/重置

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

input 元素的 type 属性处于 重置按钮 状态时,本节中的规则适用。

(This is a tracking vector.) input 元素 代表 一个按钮,当激活时,重置表单。如果该元素具有 value 属性,则该按钮的标签必须是该属性的值;否则,它必须是 实现定义 的字符串,意思是 "重置" 或类似的东西。该元素是一个 按钮

由于默认标签是 实现定义 的,并且按钮的宽度通常取决于按钮的标签,因此按钮的宽度可能会泄露一些可指纹化的信息。这些信息很可能与用户代理的标识和用户的区域设置密切相关。

该元素的 输入激活行为 如下所示

  1. 如果元素没有 表单所有者,则返回。

  2. 如果元素的 节点文档 不是 完全激活 的,则返回。

  3. 重置 元素的 表单所有者

约束验证:元素被 禁止约束验证

value IDL 属性 应用 于此元素,并且处于 默认 模式。

以下常见的 input 元素内容属性 应用 于元素:popovertargetpopovertargetaction

以下内容属性不能指定,并且 不应用 于元素:acceptaltautocompletecheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightlistmaxmaxlengthminminlengthmultiplepatternplaceholderreadonlyrequiredsizesrcstep,和 width

以下 IDL 属性和方法 不应用 于元素:checkedfileslistselectionStartselectionEndselectionDirectionvalueAsDate,和 valueAsNumber IDL 属性;select()setRangeText()setSelectionRange()stepDown(),和 stepUp() 方法。

inputchange 事件 不应用

4.10.5.1.21 按钮 状态 (type=button)

元素/输入/按钮

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

input 元素的 type 属性处于 按钮 状态时,本节中的规则适用。

input 元素 代表 一个没有默认行为的按钮。按钮的标签必须在 value 属性中提供,尽管它可能是空字符串。如果元素有 value 属性,按钮的标签必须是该属性的值;否则,它必须为空字符串。该元素是 按钮

该元素没有 输入激活行为

约束验证:该元素被 禁止约束验证

value IDL 属性 应用 于此元素,并且处于 默认 模式。

以下常见的 input 元素内容属性 应用 于元素:popovertargetpopovertargetaction

以下内容属性不能指定,并且 不应用 于元素:acceptaltautocompletecheckeddirnameformactionformenctypeformmethodformnovalidateformtargetheightlistmaxmaxlengthminminlengthmultiplepatternplaceholderreadonlyrequiredsizesrcstep,和 width

以下 IDL 属性和方法 不应用 于元素:checkedfileslistselectionStartselectionEndselectionDirectionvalueAsDate,和 valueAsNumber IDL 属性;select()setRangeText()setSelectionRange()stepDown(),和 stepUp() 方法。

inputchange 事件 不应用

4.10.5.2 关于表单控件本地化的实现说明

本节是非规范性的。

向用户显示的日期、时间和数字控件的格式与用于表单提交的格式无关。

鼓励浏览器使用用户界面,根据 input 元素的 语言 或用户的首选语言环境的约定来显示日期、时间和数字。使用页面的语言环境将确保与页面提供的数据一致。

例如,如果一个美式英语页面声称太阳马戏团的演出将在 02/03 举行,但他们的浏览器配置为使用英式英语语言环境,只在购票日期选择器中显示 03/02 的日期,这对用户来说将是令人困惑的。使用页面的语言环境至少可以确保日期在所有地方以相同的格式显示。(当然,用户仍然有可能迟到一个月,但对于这种文化差异,我们只能做这么多......)

4.10.5.3 常见的 input 元素属性

这些属性只有在 input 元素的 type 属性处于其定义声明该属性 应用 的状态时才 应用。当属性 不应用input 元素时,用户代理必须 忽略 该属性,无论以下要求和定义如何。

4.10.5.3.1 maxlengthminlength 属性

属性/maxlength

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

属性/minlength

所有当前引擎都支持。

Firefox51+Safari10.1+Chrome40+
Opera?Edge79+
Edge (Legacy)17+Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

属性/maxlength

所有当前引擎都支持。

Firefox4+Safari5+Chrome4+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS5+Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

属性/minlength

所有当前引擎都支持。

Firefox51+Safari10.1+Chrome40+
Opera?Edge79+
Edge (Legacy)17+Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

元素/input#attr-maxlength

所有当前引擎都支持。

Firefox4+Safari5.1+Chrome4+
Opera15+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android5+Safari iOS9+Chrome Android18+WebView Android4.4+Samsung Internet1.5+Opera Android15+
caniuse.com 表格

maxlength 属性 生效 时,它是一个 表单控件 maxlength 属性.

元素/input#attr-minlength

所有当前引擎都支持。

Firefox51+Safari10.1+Chrome40+
Opera27+Edge79+
Edge (Legacy)17+Internet Explorer不支持
Firefox Android51+Safari iOS10.3+Chrome Android40+WebView Android40+Samsung Internet4.0+Opera Android27+
caniuse.com 表格

minlength 属性 生效 时,它是一个 表单控件 minlength 属性.

如果 input 元素具有 最大允许值长度,那么该元素的 value 属性值的 长度 必须小于或等于该元素的 最大允许值长度.

以下摘录展示了如何将消息客户端的文本输入任意限制为固定数量的字符,从而迫使任何通过此媒介进行的对话变得简洁,并阻止智能对话。

<label>What are you doing? <input name=status maxlength=140></label>

这里,密码被赋予了最小长度

<p><label>Username: <input name=u required></label>
<p><label>Password: <input name=p required minlength=12></label>
4.10.5.3.2 size 属性

在视觉呈现中,size 属性指示用户代理允许用户在编辑元素的 时看到的字符数。

如果指定了 size 属性,则它的值必须是 有效的非负整数 且大于零。

如果属性存在,则它的值必须使用 非负整数解析规则 解析。如果结果是一个大于零的数字,则用户代理应确保至少有那么多字符可见。

size IDL 属性 仅限于正数,其 默认值为 20。

4.10.5.3.3 readonly 属性

属性/readonly

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

属性/readonly

所有当前引擎都支持。

Firefox1+Safari4+Chrome1+
Opera12.1+Edge79+
Edge (传统)12+Internet Explorer6+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+

属性/readonly

所有当前引擎都支持。

Firefox1+Safari≤4+Chrome1+
Opera≤12.1+Edge79+
Edge (Legacy)12+Internet Explorer≤6+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android≤12.1+

readonly 属性是一个 布尔属性,它控制用户是否可以编辑表单控件。当指定时,元素 不可变

约束验证:如果在 input 元素上指定了 readonly 属性,则该元素 被禁止进行约束验证.

disabledreadonly 之间的区别在于,只读控件仍然可以工作,而禁用控件通常不能作为控件工作,直到它们被启用。这在规范的其它地方用规范性要求来详细说明,这些要求引用了 disabled 概念(例如,元素的 激活行为,它是否是一个 可聚焦区域,或者在 构建表单数据集中)。与禁用控件的用户交互相关的任何其他行为,例如是否可以选择或复制文本,本标准未定义。

只有文本控件可以设置为只读,因为对于其他控件(例如复选框和按钮),只读和禁用之间没有实质性区别,因此 readonly 属性 不适用.

在下面的示例中,现有的产品标识符不能修改,但它们仍然显示在表单中,以与表示新产品的行保持一致(其中标识符尚未填写)。

<form action="products.cgi" method="post" enctype="multipart/form-data">
 <table>
  <tr> <th> Product ID <th> Product name <th> Price <th> Action
  <tr>
   <td> <input readonly="readonly" name="1.pid" value="H412">
   <td> <input required="required" name="1.pname" value="Floor lamp Ulke">
   <td> $<input required="required" type="number" min="0" step="0.01" name="1.pprice" value="49.99">
   <td> <button formnovalidate="formnovalidate" name="action" value="delete:1">Delete</button>
  <tr>
   <td> <input readonly="readonly" name="2.pid" value="FG28">
   <td> <input required="required" name="2.pname" value="Table lamp Ulke">
   <td> $<input required="required" type="number" min="0" step="0.01" name="2.pprice" value="24.99">
   <td> <button formnovalidate="formnovalidate" name="action" value="delete:2">Delete</button>
  <tr>
   <td> <input required="required" name="3.pid" value="" pattern="[A-Z0-9]+">
   <td> <input required="required" name="3.pname" value="">
   <td> $<input required="required" type="number" min="0" step="0.01" name="3.pprice" value="">
   <td> <button formnovalidate="formnovalidate" name="action" value="delete:3">Delete</button>
 </table>
 <p> <button formnovalidate="formnovalidate" name="action" value="add">Add</button> </p>
 <p> <button name="action" value="update">Save</button> </p>
</form>
4.10.5.3.4 required 属性

required 属性是一个 布尔属性。当指定时,元素 必需

约束验证:如果元素 必需,并且它的 value IDL 属性 生效 且处于模式 value,并且元素 可变,并且元素的 为空字符串,则该元素 由于缺少而处于错误状态.

以下表单有两个必填字段,一个用于电子邮件地址,一个用于密码。它还有一个第三个字段,只有当用户在密码字段和该第三个字段中输入相同的密码时,才被认为有效。

<h1>Create new account</h1>
<form action="/newaccount" method=post
      oninput="up2.setCustomValidity(up2.value != up.value ? 'Passwords do not match.' : '')">
 <p>
  <label for="username">Email address:</label>
  <input id="username" type=email required name=un>
 <p>
  <label for="password1">Password:</label>
  <input id="password1" type=password required name=up>
 <p>
  <label for="password2">Confirm password:</label>
  <input id="password2" type=password name=up2>
 <p>
  <input type=submit value="Create account">
</form>

对于单选按钮,如果 中的任何一个单选按钮被选中,则 required 属性将得到满足。因此,在下面的示例中,任何单选按钮都可以选中,而不仅仅是标记为必需的按钮。

<fieldset>
 <legend>Did the movie pass the Bechdel test?</legend>
 <p><label><input type="radio" name="bechdel" value="no-characters"> No, there are not even two female characters in the movie. </label>
 <p><label><input type="radio" name="bechdel" value="no-names"> No, the female characters never talk to each other. </label>
 <p><label><input type="radio" name="bechdel" value="no-topic"> No, when female characters talk to each other it's always about a male character. </label>
 <p><label><input type="radio" name="bechdel" value="yes" required> Yes. </label>
 <p><label><input type="radio" name="bechdel" value="unknown"> I don't know. </label>
</fieldset>

为了避免对 单选按钮组 是否必需产生混淆,建议作者在组中的所有单选按钮上指定该属性。实际上,一般来说,建议作者避免创建最初没有选中任何控件的单选按钮组,因为用户无法返回到这种状态,因此通常被认为是糟糕的用户界面。

4.10.5.3.5 multiple 属性

属性/multiple

所有当前引擎都支持。

Firefox3.6+Safari4+Chrome2+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

元素/input#attr-multiple

所有当前引擎都支持。

Firefox3.6+Safari4+Chrome2+
Opera≤12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android≤37+Samsung Internet?Opera Android≤12.1+

multiple 属性是一个 布尔属性,它指示是否允许用户指定多个值。

以下摘录展示了如何让电子邮件客户端的“收件人”字段接受多个电子邮件地址。

<label>To: <input type=email multiple name=to></label>

如果用户在他们的用户联系人数据库中有很多朋友,其中有两个朋友“蜘蛛侠”(地址为“[email protected]”)和“绯红女巫”(地址为“[email protected]”),那么在用户输入“s”之后,用户代理可能会向用户建议这两个电子邮件地址。

页面还可以从网站链接到用户的联系人数据库

<label>To: <input type=email multiple name=to list=contacts></label>
...
<datalist id="contacts">
 <option value="[email protected]">
 <option value="[email protected]">
 <option value="[email protected]">
 <option value="[email protected]">
</datalist>

假设用户在该文本控件中输入了“[email protected]”,然后开始输入第二个以“s”开头的电子邮件地址。用户代理可能会同时显示前面提到的两个朋友,以及 datalist 元素中给出的“astrophy”和“astronomy”值。

以下摘录展示了如何让电子邮件客户端的“附件”字段接受多个文件进行上传。

<label>Attachments: <input type=file multiple name=att></label>
4.10.5.3.6 pattern 属性

属性/pattern

所有当前引擎都支持。

Firefox4+Safari5+Chrome4+
Opera≤12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS4+Chrome Android?WebView Android≤37+Samsung Internet?Opera Android≤12.1+

属性/pattern

所有当前引擎都支持。

Firefox4+Safari5+Chrome4+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS4+Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

pattern 属性指定了一个正则表达式,用来检查控件的 ,或者当 multiple 属性 适用 并被设置时,检查控件的

如果指定了,该属性的值必须与 JavaScript Pattern[+UnicodeSetsMode, +N] 生成式匹配。

已编译的模式正则表达式 是一个 input 元素的 JavaScript RegExp 对象。它的确定方式如下

  1. 如果元素没有指定 pattern 属性,则返回空值。该元素没有 已编译的模式正则表达式

  2. pattern 为该元素的 pattern 属性值。

  3. regexpCompletionRegExpCreate(pattern, "v")

  4. 如果 regexpCompletion 是一个 意外完成,则返回空值。该元素没有 已编译的模式正则表达式

    用户代理应将此错误记录在开发者控制台中,以帮助调试。

  5. anchoredPattern 为字符串 "^(?:" 后跟 pattern,再后跟 ")$"。

  6. 返回 ! RegExpCreate(anchoredPattern, "v")

这些步骤的原因,而不是直接使用 pattern 属性值,有两个方面。首先,我们希望确保在与字符串匹配时,正则表达式的开头锚定到字符串的开头,结尾锚定到字符串的结尾。其次,我们希望确保正则表达式本身有效,而不仅仅是在被 "^(?:" 和 ")$" 锚定包围后才有效。

如果 ! RegExpBuiltinExec(regexp, input) 不为空,则 RegExp 对象 regexp 匹配 字符串 input

约束验证:如果元素的 不是空字符串,并且元素的 multiple 属性未指定,或者它 不适用 于给定其 type 属性当前状态的 input 元素,并且元素具有 已编译的模式正则表达式 但该正则表达式不 匹配 元素的 ,则该元素 存在模式不匹配

约束验证:如果元素的 不是空字符串,并且元素的 multiple 属性被指定并 适用input 元素,并且元素具有 已编译的模式正则表达式 但该正则表达式不 匹配 元素的每个 ,则该元素 存在模式不匹配

input 元素指定了 pattern 属性时,作者应包含一个 title 属性来描述该模式。如果存在,用户代理可以使用此属性的内容来告知用户模式不匹配,或在任何其他合适的时间使用,例如在工具提示中,或者当控件 获得焦点 时由辅助技术读出。

例如,以下片段

<label> Part number:
 <input pattern="[0-9][A-Z]{3}" name="part"
        title="A part number is a digit followed by three uppercase letters."/>
</label>

...可能导致 UA 显示以下警报:

A part number is a digit followed by three uppercase letters.
You cannot submit this form when the field is incorrect.

当一个控件具有 pattern 属性时,title 属性(如果使用)必须描述该模式。还可以包括其他信息,只要它有助于用户填写控件即可。否则,辅助技术将受到影响。

例如,如果 title 属性包含控件的标题,辅助技术最终可能说类似 您输入的文本与所需模式不匹配。生日 的话,这将毫无用处。

UA 仍然可以在非错误情况下显示 title(例如,作为将鼠标悬停在控件上时的工具提示),因此作者应注意不要将 title 的措辞写成好像一定发生了错误一样。

4.10.5.3.7 minmax 属性

属性/max

所有当前引擎都支持。

Firefox16+Safari5+Chrome4+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS4+Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

属性/min

所有当前引擎都支持。

Firefox16+Safari5+Chrome4+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS4+Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

一些表单控件可以应用明确的约束,限制用户可以提供的值的范围。通常,这样的范围是线性的和连续的。然而,一个表单控件可以 具有周期性域,在这种情况下,表单控件的最大可能范围是有限的,作者可以在其中指定跨越边界的明确范围。

具体来说,type=time 控件的最大范围是午夜到午夜(24 小时),作者可以设置连续线性范围(例如晚上 9 点到 11 点)和跨越午夜的不连续范围(例如晚上 11 点到凌晨 1 点)。

minmax 属性指示元素允许的值范围。

它们的语法由定义 type 属性当前状态的部分定义。

如果元素具有 min 属性,并且将 将字符串转换为数字的算法 应用于 min 属性的值的结果是一个数字,则该数字是元素的 最小值;否则,如果 type 属性的当前状态定义了 默认最小值,则该值是 最小值;否则,该元素没有 最小值

min 属性还定义了 步进基数

如果元素具有 max 属性,并且将 将字符串转换为数字的算法 应用于 max 属性的值的结果是一个数字,则该数字是元素的 最大值;否则,如果 type 属性的当前状态定义了 默认最大值,则该值是 最大值;否则,该元素没有 最大值

如果元素 不具有周期性域,则 max 属性值(最大值)不能小于 min 属性值(其 最小值)。

如果 不具有周期性域 的元素具有 最大值 小于其 最小值,则只要该元素具有 ,它将要么 存在下溢,要么 存在上溢

如果元素 具有周期性域 并且其 最大值 小于其 最小值,则该元素 具有反向范围

如果元素具有定义的 最小值 或定义的 最大值,则该元素 具有范围限制

约束验证:当元素具有 最小值 且不 具有反向范围,并且将 将字符串转换为数字的算法 应用于元素的 所得字符串的结果是一个数字,并且从该算法获得的数字小于 最小值,则该元素 出现下溢

约束验证:当元素具有 最大值 且不 具有反向范围,并且将 将字符串转换为数字的算法 应用于元素的 所得字符串的结果是一个数字,并且从该算法获得的数字大于 最大值,则该元素 出现上溢

约束验证:当元素 具有反向范围,并且将 将字符串转换为数字的算法 应用于元素的 所得字符串的结果是一个数字,并且从该算法获得的数字大于 最大值 *并且* 小于 最小值,则该元素同时 出现下溢出现上溢

以下日期控件限制输入为早于 1980 年代的日期

<input name=bday type=date max="1979-12-31">

以下数字控件限制输入为大于零的整数

<input name=quantity required="" type="number" min="1" value="1">

以下时间控件限制输入为晚上 9 点到凌晨 6 点之间的分钟,默认为午夜

<input name="sleepStart" type=time min="21:00" max="06:00" step="60" value="00:00">
4.10.5.3.8 step 属性

属性/step

所有当前引擎都支持。

Firefox16+Safari5+Chrome5+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS4+Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

step 属性指示对 的预期(和必需)粒度,通过限制允许的值。定义 type 属性当前状态的部分还定义了 默认步长步长比例因子,以及在某些情况下 默认步长基数,这些在处理属性时使用,如下所述。

如果指定了 step 属性,则其值必须是 有效的浮点数,其 解析 为大于零的数字,或者其值必须与字符串“any”进行 ASCII 不区分大小写 匹配。

该属性提供了元素的 允许的值步长,如下所示

  1. 如果属性不 适用,则没有 允许的值步长

  2. 否则,如果属性不存在,则 允许的值步长默认步长 乘以 步长比例因子

  3. 否则,如果属性的值与字符串“any”进行 ASCII 不区分大小写 匹配,则没有 允许的值步长

  4. 否则,如果 解析浮点数的规则 在应用于属性的值时返回错误、零或小于零的数字,则 允许的值步长默认步长 乘以 步长比例因子

  5. 否则,允许的值步长 是将 解析浮点数的规则 应用于属性的值时返回的数字乘以 步长比例因子

步长基数 是以下算法返回的值

  1. 如果元素具有 min 内容属性,并且将 将字符串转换为数字的算法 应用于 min 内容属性的值的结果不是错误,则返回该结果。

  2. 如果元素具有 value 内容属性,并且将 将字符串转换为数字的算法 应用于 value 内容属性的值的结果不是错误,则返回该结果。

  3. 如果给定元素的 type 属性的状态,为该元素定义了 默认步长基数,则返回它。

  4. 返回零。

约束验证:当元素具有 允许的值步长,并且将 将字符串转换为数字的算法 应用于元素的 所得字符串的结果是一个数字,并且从该数字减去 步长基数 的结果不是 允许的值步长 的整数倍,则该元素 出现步长不匹配

以下范围控件只接受 0..1 范围内的值,并且允许该范围内的 256 个步长

<input name=opacity type=range min=0 max=1 step=0.00392156863>

以下控件允许选择一天中的任何时间,并允许任何精度(例如,千分之一秒或更高精度)

<input name=favtime type=time step=any>

通常,时间控件的精度限制为一分钟。

4.10.5.3.9 list 属性

元素/input#list

所有当前引擎都支持。

Firefox4+Safari12.1+Chrome20+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android4.4.3+Samsung Internet?Opera Android12.1+

list 属性用于标识一个元素,该元素列出了建议给用户的预定义选项。

如果存在,其值必须是与同一 中的 datalist 元素相同的 ID

建议来源元素 中第一个具有与 list 属性的值相同的 ID 的元素,如果该元素是 datalist 元素。如果没有 list 属性,或者没有具有该 ID 的元素,或者具有该 ID 的第一个元素不是 datalist 元素,则没有 建议来源元素

如果有 建议来源元素,则当用户代理允许用户编辑 input 元素的 时,用户代理应以适合所用控件类型的形式向用户提供 建议来源元素 所代表的建议。如果合适,用户代理应使用建议的 标签 来向用户标识建议。

鼓励用户代理过滤由建议来源元素表示的建议,当建议数量很大时,只包含最相关的建议(例如,基于用户到目前为止的输入)。没有定义精确的阈值,但将列表限制在四到七个值是合理的。如果根据用户的输入进行过滤,用户代理应该在建议的标签中搜索匹配项。用户代理应考虑输入变化如何影响匹配过程。应应用 Unicode 规范化,以便由不同的键盘或输入特定机制引起的不同的底层 Unicode 代码点序列不会干扰匹配过程。应忽略大小写变化,这可能需要特定于语言的大小写映射。有关这些示例,请参阅万维网字符模型:字符串匹配。用户代理还可以提供其他匹配功能:例如,一些示例包括将不同的假名形式相互匹配(或与汉字匹配)、忽略重音或应用拼写校正。[CHARMODNORM]

此文本字段允许您选择一种 JavaScript 函数类型。

<input type="text" list="function-types">
<datalist id="function-types">
  <option value="function">function</option>
  <option value="async function">async function</option>
  <option value="function*">generator function</option>
  <option value="=>">arrow function</option>
  <option value="async =>">async arrow function</option>
  <option value="async function*">async generator function</option>
</datalist>

对于遵循上述建议的用户代理,标签都会显示。

A text box with a drop down button on the right hand side; with, below, a drop down box containing a list of the six values the left and the six labels on the right.

然后,键入 "arrow" 或 "=>" 将过滤列表以显示标签为 "arrow function" 和 "async arrow function" 的条目。键入 "generator" 或 "*" 将过滤列表以显示标签为 "generator function" 和 "async generator function" 的条目。

与往常一样,用户代理可以自由地做出适合其特定要求和用户特定情况的用户界面决策。但是,从历史上看,这对于实现者、Web 开发人员和用户来说一直是一个混乱的领域,因此我们在上面给出了一些“应该”建议。

如何处理用户对建议的选择取决于元素是仅接受单个值的控件,还是接受多个值。

如果元素没有指定multiple 属性,或者如果multiple 属性不适用

当用户选择一个建议时,input 元素的value 必须设置为所选建议的value,就好像用户自己编写了该值一样。

如果元素的type 属性处于Email 状态,并且元素指定了multiple 属性

当用户选择一个建议时,用户代理必须要么向input 元素的values添加一个新的条目,其值为所选建议的value,要么更改input 元素的values中的现有条目,使其具有由所选建议的value给出的值,就好像用户自己添加了一个具有该值的条目,或者编辑了一个现有条目使其成为该值一样。哪种行为将被应用取决于实现定义的方式。


如果list 属性不适用,则没有建议来源元素

此 URL 字段提供一些建议。

<label>Homepage: <input name=hp type=url list=hpurls></label>
<datalist id=hpurls>
 <option value="https://www.google.com/" label="Google">
 <option value="https://www.reddit.com/" label="Reddit">
</datalist>

用户历史记录中的其他 URL 也可能显示;这取决于用户代理。

此示例演示了如何设计一个使用自动完成列表功能的表单,同时在传统用户代理中仍然能有效地降级。

如果自动完成列表仅仅是一种辅助,并且对内容不重要,那么只需使用具有子元素option 元素的datalist 元素就足够了。为了防止在传统用户代理中呈现值,它们需要放置在value 属性中,而不是内联。

<p>
 <label>
  Enter a breed:
  <input type="text" name="breed" list="breeds">
  <datalist id="breeds">
   <option value="Abyssinian">
   <option value="Alpaca">
   <!-- ... -->
  </datalist>
 </label>
</p>

但是,如果需要在传统用户代理中显示值,则可以将回退内容放置在datalist 元素中,如下所示

<p>
 <label>
  Enter a breed:
  <input type="text" name="breed" list="breeds">
 </label>
 <datalist id="breeds">
  <label>
   or select one from the list:
   <select name="breed">
    <option value=""> (none selected)
    <option>Abyssinian
    <option>Alpaca
    <!-- ... -->
   </select>
  </label>
 </datalist>
</p>

回退内容仅在不支持datalist 的用户代理中显示。另一方面,选项将被所有用户代理检测到,即使它们不是datalist 元素的子元素。

请注意,如果option 元素在datalist 中使用,并且selected,它将默认情况下被传统用户代理选中(因为它会影响select 元素),但它不会对支持datalist 的用户代理中的input 元素有任何影响。

4.10.5.3.10 placeholder 属性

元素/input#placeholder

所有当前引擎都支持。

Firefox4+Safari4+Chrome3+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

元素/input#attr-placeholder

所有当前引擎都支持。

Firefox4+Safari4+Chrome3+
Opera≤12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android≤37+Samsung Internet?Opera Android≤12.1+

placeholder 属性表示一个简短提示(一个词或短语),旨在帮助用户在控件没有值时进行数据输入。提示可以是示例值或对预期格式的简要描述。如果指定了该属性,则其值必须不包含 U+000A 换行符 (LF) 或 U+000D 回车符 (CR) 字符。

placeholder 属性不应作为label 的替代品。对于更长的提示或其他建议文本,title 属性更合适。

这些机制非常相似,但细微不同:控件的label 给出的提示始终显示;在placeholder 属性中给出的简短提示在用户输入值之前显示;title 属性中的提示在用户请求进一步帮助时显示。

用户代理应向用户显示此提示,在从提示中剥离换行符之后,当元素的value 为空字符串时,尤其是在控件未获得焦点时。

如果用户代理通常在控件获得焦点时不向用户显示此提示,那么用户代理应在控件由于autofocus 属性而获得焦点时显示此提示,因为在这种情况下,用户将没有机会在获得焦点之前检查控件。

以下是一个使用placeholder 属性的邮件配置用户界面示例

<fieldset>
 <legend>Mail Account</legend>
 <p><label>Name: <input type="text" name="fullname" placeholder="John Ratzenberger"></label></p>
 <p><label>Address: <input type="email" name="address" placeholder="[email protected]"></label></p>
 <p><label>Password: <input type="password" name="password"></label></p>
 <p><label>Description: <input type="text" name="desc" placeholder="My Email Account"></label></p>
</fieldset>

在控件的内容具有一个方向性而占位符需要具有不同方向性的情况下,可以在属性值中使用 Unicode 的双向算法格式化字符

<input name=t1 type=tel placeholder="&#x202B;رقم الهاتف 1&#x202E;">
<input name=t2 type=tel placeholder="&#x202B;رقم الهاتف 2&#x202E;">

为了更清晰,以下是使用数字字符引用而不是内联阿拉伯语的相同示例

<input name=t1 type=tel placeholder="&#x202B;&#1585;&#1602;&#1605; &#1575;&#1604;&#1607;&#1575;&#1578;&#1601; 1&#x202E;">
<input name=t2 type=tel placeholder="&#x202B;&#1585;&#1602;&#1605; &#1575;&#1604;&#1607;&#1575;&#1578;&#1601; 2&#x202E;">
4.10.5.4 常用的input 元素 API
input.value [ = value ]

返回表单控件的当前value

可以设置,以更改值。

如果控件是文件上传控件,并且将其设置为除空字符串之外的任何值,则会抛出"InvalidStateError" DOMException

input.checked [ = value ]

返回表单控件的当前checkedness

可以设置,以更改checkedness

input.files [ = files ]

FileList

所有当前引擎都支持。

Firefox3+Safari4+Chrome2+
Opera11.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android11.1+

HTMLInputElement/files

所有当前引擎都支持。

Firefox3+Safari4+Chrome2+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer🔰 10+
Firefox Android?Safari iOS3+Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

返回一个FileList 对象,列出表单控件的所选文件

如果控件不是文件控件,则返回 null。

可以设置为一个 FileList 对象来更改表单控件的 选中文件。例如,作为拖放操作的结果。

input.valueAsDate [ = value ]

返回一个 Date 对象,表示表单控件的 (如果适用);否则,返回 null。

可以设置,以更改值。

如果控件不是基于日期或时间的,则抛出 "InvalidStateError" DOMException

input.valueAsNumber [ = value ]

返回一个数字,表示表单控件的 (如果适用);否则,返回 NaN。

可以设置,更改值。将其设置为 NaN 将使基础值设置为空字符串。

如果控件既不是基于日期或时间的,也不是数字,则抛出 "InvalidStateError" DOMException

input.stepUp([ n ])

HTMLInputElement/stepUp

Firefox🔰 16+Safari5+Chrome5+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS4+Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+
input.stepDown([ n ])

HTMLInputElement/stepDown

Firefox🔰 16+Safari5+Chrome5+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android?Safari iOS4+Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

通过 step 属性中给出的值乘以 n 来更改表单控件的 n 的默认值为 1。

如果控件既不是基于日期或时间的,也不是数字,或者如果 step 属性的值为 "any",则抛出 "InvalidStateError" DOMException

input.list

返回 list 属性指示的 datalist 元素。

input.showPicker()

显示 input 的任何适用选择器 UI,以便用户可以选择值。(如果未为给定控件实现选择器 UI,则此方法不会执行任何操作。)

如果 input 不是 可变的,则抛出 "InvalidStateError" DOMException

如果在没有 瞬态用户激活 的情况下调用,则抛出 "NotAllowedError" DOMException

如果 input 位于跨域 iframe 中,则抛出 "SecurityError" DOMException,除非 input 处于 文件上传颜色 状态。

value IDL 属性允许脚本操作 input 元素的 。该属性处于以下模式之一,这些模式定义了其行为

获取时,返回元素的当前

设置时

  1. oldValue 为元素的

  2. 将元素的 设置为新值。

  3. 将元素的 脏值标志 设置为 true。

  4. 调用 值清理算法,如果元素的 type 属性的当前状态定义了它。

  5. 如果元素的 (在应用 值清理算法 后)与 oldValue 不同,并且元素具有 文本输入光标位置,将 文本输入光标位置 移动到文本控件的末尾,取消选择任何选定的文本并 将选择方向重置 为 "none"。

默认值

获取时,如果元素具有 value 内容属性,则返回该属性的值;否则,返回空字符串。

设置时,将元素的 value 内容属性的值设置为新值。

默认值/开启

获取时,如果元素具有 value 内容属性,则返回该属性的值;否则,返回字符串 "on"。

设置时,将元素的 value 内容属性的值设置为新值。

文件名

获取时,返回字符串 "C:\fakepath\",后跟列表中第一个文件的名称 选中文件(如果有),或者如果列表为空,则返回空字符串。

设置时,如果新值为 "on",则清空列表 选中文件;否则,抛出 "InvalidStateError" DOMException

此 "fakepath" 要求是历史上的一个不幸的意外。有关更多信息,请参见 文件上传状态部分中的示例

由于列表中的文件名不允许 路径组件 选中文件,因此 "\fakepath\" 不能被误认为是路径组件。


checked IDL 属性允许脚本操作 input 元素的 选中状态。获取时,它必须返回元素的当前 选中状态;设置时,它必须将元素的 选中状态 设置为新值,并将元素的 脏选中状态标志 设置为 true。


files IDL 属性允许脚本访问元素的 选中文件

获取时,如果 IDL 属性 适用,它必须返回一个 FileList 对象,该对象表示当前 选中文件。直到 选中文件 列表更改之前,必须返回同一个对象。如果 IDL 属性 不适用,则它必须返回 null。 [FILEAPI]

设置时,它必须运行以下步骤

  1. 如果 IDL 属性 不适用 或给定值为 null,则返回。

  2. 将元素的 选中文件 替换为给定值。


valueAsDate IDL 属性表示元素的 ,解释为日期。

获取时,如果 valueAsDate 属性 不适用,如 input 元素的 type 属性的当前状态所定义,则返回 null。否则,将该状态为元素的 定义的 将字符串转换为 Date 对象的算法 运行;如果算法返回一个 Date 对象,则返回它,否则返回 null。

设置时,如果 valueAsDate 属性 不适用,如 input 元素的 type 属性的当前状态所定义,则抛出 "InvalidStateError" DOMException;否则,如果新值不为 null 且不是 Date 对象,则抛出 TypeError 异常;否则,如果新值是 null 或表示 NaN 时间值的 Date 对象,则将元素的 设置为空字符串;否则,在该状态为新值定义的 Date 对象转换为字符串的算法 上运行,并将元素的 设置为生成的字符串。


valueAsNumber IDL 属性表示元素的 ,解释为数字。

获取时,如果 valueAsNumber 属性 不适用,如 input 元素的 type 属性当前状态所定义,则返回一个非数字 (NaN) 值。否则,运行针对该状态定义的 将字符串转换为数字的算法 到元素的 value;如果算法返回一个数字,则返回它,否则返回一个非数字 (NaN) 值。

设置时,如果新值为无穷大,则抛出一个 TypeError 异常。否则,如果 valueAsNumber 属性 不适用,如 input 元素的 type 属性当前状态所定义,则抛出一个 "InvalidStateError" DOMException。否则,如果新值为一个非数字 (NaN) 值,则将元素的 value 设置为空字符串。否则,对新值运行针对该状态定义的 将数字转换为字符串的算法,并将元素的 value 设置为生成的字符串。


当调用 stepDown(n)stepUp(n) 方法时,必须运行以下算法

  1. 如果 stepDown()stepUp() 方法 不适用,如 input 元素的 type 属性当前状态所定义,则抛出一个 "InvalidStateError" DOMException

  2. 如果元素没有 允许的值步长,则抛出一个 "InvalidStateError" DOMException

  3. 如果元素有 最小值最大值,并且 最小值 大于 最大值,则返回。

  4. 如果元素有 最小值最大值,并且没有大于或等于元素的 最小值 且小于或等于元素的 最大值 的值,当从 步长基数 中减去时,是 允许的值步长 的整数倍,则返回。

  5. 如果将 将字符串转换为数字的算法 应用于由元素的 value 给出的字符串不会导致错误,则令 value 为该算法的结果。否则,令 value 为零。

  6. valueBeforeSteppingvalue

  7. 如果从 步长基数 中减去 value 不是 允许的值步长 的整数倍,则将 value 设置为最接近的值,该值在从 步长基数 中减去时,是 允许的值步长 的整数倍,并且如果调用的方法是 stepDown() 方法,则小于 value,否则大于 value

    否则(从 步长基数 中减去 value允许的值步长 的整数倍)

    1. n 为参数。

    2. delta允许的值步长 乘以 n

    3. 如果调用的方法是 stepDown() 方法,则对 delta 取反。

    4. value 为将 delta 加到 value 的结果。

  8. 如果元素有 最小值,并且 value 小于该 最小值,则将 value 设置为最小的值,该值在从 步长基数 中减去时,是 允许的值步长 的整数倍,并且大于或等于 minimum

  9. 如果元素有 最大值,并且 value 大于该 最大值,则将 value 设置为最大的值,该值在从 步长基数 中减去时,是 允许的值步长 的整数倍,并且小于或等于 maximum

  10. 如果调用的方法是 stepDown() 方法且 value 大于 valueBeforeStepping,或者调用的方法是 stepUp() 方法且 value 小于 valueBeforeStepping,则返回。

    这确保了在以下示例中,对 input 元素调用 stepUp() 方法不会改变该元素的 value

    <input type=number value=1 max=0>
  11. value as string 为对 value 运行针对 input 元素的 type 属性当前状态定义的 将数字转换为字符串的算法 的结果。

  12. 将元素的 value 设置为 value as string


list IDL 属性必须返回当前 建议来源元素(如果有),否则返回 null。


HTMLInputElement/showPicker

所有当前引擎都支持。

Firefox101+Safari16+Chrome99+
Opera?Edge99+
Edge (Legacy)?Internet ExplorerNo
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLInputElement showPicker()HTMLSelectElement showPicker() 方法的步骤是

  1. 如果 this 不是 可变的,则抛出一个 "InvalidStateError" DOMException

  2. 如果 this相关设置对象来源this相关设置对象顶级来源 不是 同源,并且 this 是一个 select 元素,或者 thistype 属性不在 文件上传 状态或 颜色 状态,则抛出一个 "SecurityError" DOMException

    文件颜色 输入出于历史原因免于此检查:它们的 输入激活行为 也显示它们的拾取器,并且从未受来源检查的保护。

  3. 如果 this相关全局对象 没有 瞬时激活,则抛出一个 "NotAllowedError" DOMException

  4. 如果 this 是一个 select 元素,并且 this 没有 正在渲染,则抛出一个 "NotSupportedError" DOMException

  5. 显示拾取器(如果适用),用于 this

对于 inputselect 元素 element显示拾取器(如果适用) 的操作如下

  1. 如果 element相关全局对象 没有 瞬时激活,则返回。

  2. 如果 element 不是 可变的,则返回。

  3. 消耗用户激活,前提是给出 元素相关全局对象

  4. 如果 element 是一个 input 元素,并且 elementtype 属性处于 文件上传 状态,则 并行 运行以下步骤。

    1. 可选地,等待任何先前执行的此算法完成。

    2. 向用户显示一个提示,要求用户指定一些文件。如果 multiple 属性未在 element 上设置,则最多可以选择一个文件;否则,可以选择任意数量的文件。文件可以来自文件系统,也可以动态创建,例如,从连接到用户设备的相机拍摄的照片。

    3. 等待用户完成选择。

    4. 如果用户在未更改选择的情况下取消了提示,则 在用户交互任务源上排队一个元素任务,该任务源是 用户交互任务源,给出 element触发一个名为 cancel 的事件,在 element 上触发, bubbles 属性初始化为 true。

    5. 否则,更新 element 的文件选择

    与所有用户界面规范一样,用户代理在如何解释这些要求方面拥有很大的自由度。上面的文字暗示用户要么取消提示,要么更改选择;这两者中只有一个为真。但是,将这些可能性映射到特定的用户界面元素不受标准的强制。例如,用户代理可能会将点击“取消”按钮(在之前选择了文件的情况下)解释为更改选择以选择零个文件,从而触发 inputchange。或者它可能会将此类点击解释为取消,这将保持选择不变,从而触发 cancel。同样,是否重新选择与之前选择相同的文件(即使与之前选择相同)是取消,还是更改选择,也取决于用户代理。

  5. 否则,用户代理应该显示任何与为 element 选择值相关的用户界面,就像用户通常与控件交互时一样。(如果 element 不适用此类 UI,则此步骤不执行任何操作。)

    如果显示了此类用户界面,它必须遵守规范相关部分中针对 element 的行为(根据其 type 属性状态)而提出的要求。(例如,各个部分描述了对结果 value 字符串的限制。)

    此步骤可能会产生副作用,例如关闭此算法先前显示的其他选择器。(如果这关闭了文件选择选择器,则根据上面的说法,这将导致触发 inputchange 事件,或者是一个 cancel 事件。)

    截至撰写本文时,典型的浏览器实现显示了以下内容的选择器 UI:

    但是,此步骤的目的是触发任何选择器 UI 实现。因此,例如,如果用户代理为 密码 状态实现了密码选择器 UI,则期望此方法在密码输入上调用时显示该选择器 UI。

4.10.5.5 通用事件行为

inputchange 事件 apply 时(这适用于所有 input 控件,除了 按钮type 属性处于 隐藏 状态的控件),这些事件被触发以表明用户已与控件交互。当用户修改控件的数据时,会触发 input 事件。当值被提交时,会触发 change 事件(如果对控件有意义),否则,当控件 失去焦点 时会触发。在所有情况下,input 事件在相应的 change 事件(如果有)之前触发。

input 元素具有定义的 输入激活行为 时,如果这些事件 apply,则分派这些事件的规则在上面定义了 type 属性状态的部分中给出。(这适用于所有 input 控件,其 type 属性处于 复选框 状态、单选按钮 状态或 文件上传 状态。)

对于 input 元素,它没有定义的 输入激活行为,但这些事件 apply,并且用户界面既包含交互式操作,也包含明确的提交操作,那么当用户更改元素的 value 时,用户代理必须 在用户交互任务源上排队一个元素任务,该任务源是 用户交互任务源,给出 input 元素以 触发一个名为 input 的事件,在 input 元素上触发, bubblescomposed 属性初始化为 true,并且在用户提交更改的任何时候,用户代理必须 在用户交互任务源上排队一个元素任务,该任务源是 用户交互任务源,给出 input 元素以将其 用户有效性 设置为 true 并 触发一个名为 change 的事件,在 input 元素上触发, bubbles 属性初始化为 true。

一个既包含交互式操作又包含提交操作的用户界面的示例是 范围 控件(使用滑块),当使用指向设备操作时。当用户拖动控件的旋钮时,input 事件会在位置更改时触发,而 change 事件只会当用户松开旋钮(提交到特定值)时触发。

对于没有定义 输入激活行为input 元素,但这些事件 适用 并且用户界面包含显式提交操作而没有中间操作,那么,无论何时用户提交对元素 的更改,用户代理必须在给定 input 元素的 用户交互任务源排队一个元素任务,以首先在 input 元素上 触发一个名为 input 的事件,其 冒泡合成 属性初始化为 true,然后在 input 元素上 触发一个名为 change 的事件,其 冒泡 属性初始化为 true。

包含提交操作的用户界面的一个示例是 颜色 控件,它包含一个用于打开色盘的按钮:如果 只在对话框关闭时更改,那么这就是显式提交操作。另一方面,如果操作控件以交互方式更改颜色,则可能没有提交操作。

包含提交操作的用户界面的另一个示例是 日期 控件,它允许基于文本的用户输入和从下拉日历中进行用户选择:虽然文本输入可能没有显式提交步骤,但从下拉日历中选择日期,然后关闭下拉日历将是提交操作。

对于没有定义 输入激活行为input 元素,但这些事件 适用,无论何时用户导致元素 更改而没有显式提交操作,用户代理必须在给定 input 元素的 用户交互任务源排队一个元素任务,以在 input 元素上 触发一个名为 input 的事件,其 冒泡合成 属性初始化为 true。相应的 change 事件(如果有)将在控件 失去焦点 时触发。

用户更改元素 的示例包括用户在文本控件中键入、将新值粘贴到控件中或撤消对该控件的编辑。一些用户交互不会导致值发生更改,例如,在空的文本控件中按“删除”键,或使用剪贴板中的文本替换控件中的某些文本,而该文本恰好是完全相同的文本。

以滑块形式存在的 范围 控件,用户已 获得焦点 并使用键盘与之交互,是用户更改元素 而没有提交步骤的另一个示例。

在仅触发 input 事件的 任务 的情况下,用户代理可能会等待用户交互的适当中断,然后再 排队 任务;例如,用户代理可以等待用户 100 毫秒内没有按任何键,以便仅在用户暂停时触发事件,而不是在每次按键时连续触发。

当用户代理需要代表用户更改 input 元素的 (例如,作为表单预填充功能的一部分)时,用户代理必须在给定 input 元素的 用户交互任务源排队一个元素任务,以首先相应地更新 ,然后在 input 元素上 触发一个名为 input 的事件,其 冒泡合成 属性初始化为 true,然后在 input 元素上 触发一个名为 change 的事件,其 冒泡 属性初始化为 true。

这些事件不会响应脚本对表单控件值所做的更改而触发。(这样做是为了更容易更新表单控件的值,以响应用户对控件的操作,而无需过滤脚本自身的更改以避免无限循环。)

当浏览器在 导航期间恢复状态 的过程中更改表单控件的值时,也不会触发这些事件。