动态标准 - 最后更新于 2024 年 9 月 12 日
input
元素type
属性的状态type=hidden
)type=text
) 和搜索状态 (type=search
)type=tel
)type=url
)type=email
)type=password
)type=date
)type=month
)type=week
)type=time
)type=datetime-local
)type=number
)type=range
)type=color
)type=checkbox
)type=radio
)type=file
)type=submit
)type=image
)type=reset
)type=button
)input
元素的通用属性input
元素的通用 APIinput
元素所有当前引擎都支持。
所有当前引擎都支持。
type
属性 不在 隐藏 状态中:交互式内容。type
属性 不在 隐藏 状态中:列出的,可标记的,可提交的,可重置的,以及 自动大写和自动更正继承 与表单相关的元素。type
属性 在 隐藏 状态中:列出的,可提交的,可重置的,以及 自动大写和自动更正继承 与表单相关的元素。type
属性 不在 隐藏 状态中:可感知内容。accept
— 在 文件上传控件 中,提示预期文件类型alt
— 当图像不可用时使用的替代文本autocomplete
— 表单自动填充功能的提示checked
— 控制是否选中dirname
— 要用于发送元素的 方向性 的表单控件的名称,在 表单提交 中使用disabled
— 表单控件是否禁用form
— 将元素与 form
元素关联起来formaction
— 用于 表单提交 的 URLformenctype
— 用于 表单提交 的 条目列表 编码类型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
属性在 按钮 状态下:面向作者;面向实施者.[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 | 按钮 |
哪些 accept
、alt
、autocomplete
、checked
、dirname
、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
、height
、list
、max
、maxlength
、min
、minlength
、multiple
、pattern
、placeholder
、readonly
、required
、size
、src
、step
和 width
内容属性、checked
、files
、valueAsDate
、valueAsNumber
和 list
IDL 属性、select()
方法、selectionStart
、selectionEnd
和 selectionDirection
IDL 属性、setRangeText()
和 setSelectionRange()
方法、stepUp()
和 stepDown()
方法以及 input
和 change
事件 应用 于 input
元素,取决于其 type
属性的状态。定义每个类型的子节也明确地在规范性“簿记”部分中定义了这些功能中的哪些适用,以及哪些 不适用 于每个类型。这些功能的行为取决于它们是否适用,如它们各自的部分中所定义(参见 内容属性、API、事件)。
下表是非规范性的,并总结了哪些内容属性、IDL 属性、方法和事件 应用 于每个状态
文本、搜索 | 电话, URL | 电子邮件 | 密码 | 日期, 月份, 星期, 时间 | 本地日期和时间 | 数字 | 范围 | 颜色 | 复选框, 单选按钮 | 文件上传 | 提交按钮 | 图像按钮 | 重置按钮, 按钮 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
内容属性 | |||||||||||||||
接受
| · | · | · | · | · | · | · | · | · | · | · | 是 | · | · | · |
替代文本
| · | · | · | · | · | · | · | · | · | · | · | · | · | 是 | · |
自动完成
| 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | · | · | · | · | · |
选中
| · | · | · | · | · | · | · | · | · | · | 是 | · | · | · | · |
目录名
| 是 | 是 | 是 | 是 | 是 | · | · | · | · | · | · | · | 是 | · | · |
表单操作
| · | · | · | · | · | · | · | · | · | · | · | · | 是 | 是 | · |
表单编码类型
| · | · | · | · | · | · | · | · | · | · | · | · | 是 | 是 | · |
表单方法
| · | · | · | · | · | · | · | · | · | · | · | · | 是 | 是 | · |
表单验证
| · | · | · | · | · | · | · | · | · | · | · | · | 是 | 是 | · |
表单目标
| · | · | · | · | · | · | · | · | · | · | · | · | 是 | 是 | · |
高度
| · | · | · | · | · | · | · | · | · | · | · | · | · | 是 | · |
列表
| · | 是 | 是 | 是 | · | 是 | 是 | 是 | 是 | 是 | · | · | · | · | · |
最大值
| · | · | · | · | · | 是 | 是 | 是 | 是 | · | · | · | · | · | · |
最大长度
| · | 是 | 是 | 是 | 是 | · | · | · | · | · | · | · | · | · | · |
最小值
| · | · | · | · | · | 是 | 是 | 是 | 是 | · | · | · | · | · | · |
最小长度
| · | 是 | 是 | 是 | 是 | · | · | · | · | · | · | · | · | · | · |
多选
| · | · | · | 是 | · | · | · | · | · | · | · | 是 | · | · | · |
模式
| · | 是 | 是 | 是 | 是 | · | · | · | · | · | · | · | · | · | · |
占位符
| · | 是 | 是 | 是 | 是 | · | · | 是 | · | · | · | · | · | · | · |
弹出框目标
| · | · | · | · | · | · | · | · | · | · | · | · | 是 | 是 | 是 |
弹出框目标操作
| · | · | · | · | · | · | · | · | · | · | · | · | 是 | 是 | 是 |
只读
| · | 是 | 是 | 是 | 是 | 是 | 是 | 是 | · | · | · | · | · | · | · |
必填
| · | 是 | 是 | 是 | 是 | 是 | 是 | 是 | · | · | 是 | 是 | · | · | · |
大小
| · | 是 | 是 | 是 | 是 | · | · | · | · | · | · | · | · | · | · |
源
| · | · | · | · | · | · | · | · | · | · | · | · | · | 是 | · |
步长
| · | · | · | · | · | 是 | 是 | 是 | 是 | · | · | · | · | · | · |
宽度
| · | · | · | · | · | · | · | · | · | · | · | · | · | 是 | · |
IDL 属性和方法 | |||||||||||||||
选中
| · | · | · | · | · | · | · | · | · | · | 是 | · | · | · | · |
文件
| · | · | · | · | · | · | · | · | · | · | · | 是 | · | · | · |
值
| 默认值 | 值 | 值 | 值 | 值 | 值 | 值 | 值 | 值 | 值 | 默认值/开启 | 文件名 | 默认值 | 默认值 | 默认值 |
日期值
| · | · | · | · | · | 是 | · | · | · | · | · | · | · | · | · |
数值值
| · | · | · | · | · | 是 | 是 | 是 | 是 | · | · | · | · | · | · |
列表
| · | 是 | 是 | 是 | · | 是 | 是 | 是 | 是 | 是 | · | · | · | · | · |
选择()
| · | 是 | 是 | 是† | 是 | 是† | 是† | 是† | · | 是† | · | 是† | · | · | · |
选择开始位置
| · | 是 | 是 | · | 是 | · | · | · | · | · | · | · | · | · | · |
选择结束位置
| · | 是 | 是 | · | 是 | · | · | · | · | · | · | · | · | · | · |
选择方向
| · | 是 | 是 | · | 是 | · | · | · | · | · | · | · | · | · | · |
设置文本范围()
| · | 是 | 是 | · | 是 | · | · | · | · | · | · | · | · | · | · |
设置选择范围()
| · | 是 | 是 | · | 是 | · | · | · | · | · | · | · | · | · | · |
向下步进()
| · | · | · | · | · | 是 | 是 | 是 | 是 | · | · | · | · | · | · |
向上步进()
| · | · | · | · | · | 是 | 是 | 是 | 是 | · | · | · | · | · | · |
事件 | |||||||||||||||
input 事件
| · | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | · | · | · |
change 事件
| · | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | · | · | · |
† 如果控件没有可选文本,则 select()
方法将执行无操作,不会出现 "InvalidStateError
" DOMException
。
type
属性的某些状态定义了 值清理算法。
每个 input
元素都具有一个 值,它由 value
IDL 属性公开。某些状态定义了 将字符串转换为数字的算法,将数字转换为字符串的算法,将字符串转换为 Date
对象的算法 以及 将 Date
对象转换为字符串的算法,这些算法由 max
、min
、step
、valueAsDate
、valueAsNumber
和 stepUp()
使用。
input
元素的 脏值标志 必须在用户与控件交互以更改 值 时设置为 true。(它还将在以编程方式更改值时设置为 true,如 value
IDL 属性定义中所述。)
value
内容属性提供了 input
元素的默认 值。当添加、设置或删除 value
内容属性时,如果控件的 脏值标志 为 false,则用户代理必须将元素的 值 设置为 value
内容属性的值(如果有),否则设置为空字符串,然后运行当前 值清理算法(如果定义了)。
每个 input
元素都具有一个 选中状态,它由 checked
IDL 属性公开。
每个 input
元素都具有一个布尔型 脏选中状态标志。当它为 true 时,表示该元素具有 脏选中状态。 脏选中状态标志 必须在创建元素时最初设置为 false,并且必须在用户与控件交互以更改 选中状态 时设置为 true。
所有当前引擎都支持。
checked
内容属性是一个 布尔型属性,它提供了 input
元素的默认 选中状态。当添加 checked
内容属性时,如果控件没有 脏选中状态,则用户代理必须将元素的 选中状态 设置为 true;当删除 checked
内容属性时,如果控件没有 脏选中状态,则用户代理必须将元素的 选中状态 设置为 false。
重置算法 对于 input
元素,是将其 用户有效性、脏值标志 和 脏选中状态标志 设置回 false,将元素的 值 设置为 value
内容属性的值(如果有),否则设置为空字符串,如果元素具有 checked
内容属性,则将元素的 选中状态 设置为 true,否则设置为 false,清空 已选择文件 列表,然后调用 值清理算法(如果 type
属性的当前状态定义了该算法)。
每个 input
元素都可以是 可变的。除另有规定外,input
元素始终是 可变的。类似地,除另有规定外,用户代理不应允许用户修改元素的 值 或 选中状态。
readonly
属性在某些情况下(例如,对于 日期 状态,但对于 复选框 状态则不行)也可以阻止 input
元素成为 可变的。
克隆步骤 对于 input
元素,必须将 值、脏值标志、选中状态 和 脏选中状态标志 从被克隆的节点传播到副本。
激活行为 对于 input
元素 element,给定 event,以下为这些步骤
运行 element 的 输入激活行为(如果有),否则不执行任何操作。
在 element 上运行 弹出框目标属性激活行为。
请记住,元素的 激活行为 对用户触发的激活和合成激活(例如,通过 el.click()
)都会运行。用户代理也可能对特定控件(此处未指定)具有行为,这些行为仅由真正的用户触发的激活触发。一个常见的选择是 显示选择器(如果适用),用于该控件。相反,输入激活行为 仅对 文件上传 和 颜色 状态的特殊历史案例显示选择器。
如果此元素的 type
属性处于 复选框状态,则将此元素的 选中状态 设置为其相反的值(即,如果为假,则为真,如果为真,则为假),并将此元素的 indeterminate
IDL 属性设置为 false。
如果此元素的 type
属性处于 单选按钮状态,则获取对此元素的 单选按钮组 中 选中状态 设置为 true 的元素的引用(如果有),然后将此元素的 选中状态 设置为 true。
如果元素的 type
属性处于 复选框状态,则将元素的 选中状态 和元素的 indeterminate
IDL 属性设置回 旧版预激活行为 运行之前的它们的值。
如果此元素的 type
属性处于 单选按钮状态,则如果在 旧版预激活行为 中获得引用的元素(如果有)仍然在此元素的 单选按钮组 中(如果有),并且如果确实如此,则将该元素的 选中状态 设置为 true;否则,如果没有这样的元素,或者该元素不再在此元素的 单选按钮组 中,或者此元素不再具有 单选按钮组,则将此元素的 选中状态 设置为 false。
当首次创建 input
元素时,元素的渲染和行为必须设置为为 type
属性的状态定义的渲染和行为,并且如果 type
属性的状态定义了 值清理算法,则必须调用该算法。
当 input
元素的 type
属性更改状态时,用户代理必须执行以下步骤
如果元素的 type
属性的先前状态将 value
IDL 属性置于 value 模式下,并且元素的 value 不是空字符串,并且元素的 type
属性的新状态将 value
IDL 属性置于 default 模式或 default/on 模式中,则将元素的 value
内容属性设置为元素的 value。
否则,如果元素的 type
属性的先前状态将 value
IDL 属性置于除 value 模式以外的任何模式中,并且元素的 type
属性的新状态将 value
IDL 属性置于 value 模式中,则将元素的 value 设置为 value
内容属性的值(如果有),否则设置为空字符串,然后将控件的 脏值标志 设置为 false。
否则,如果元素的 type
属性的先前状态将 value
IDL 属性置于除 filename 模式以外的任何模式中,并且元素的 type
属性的新状态将 value
IDL 属性置于 filename 模式中,则将元素的 value 设置为空字符串。
将元素的渲染和行为更新为新状态。
发出类型更改信号 用于元素。(单选按钮 状态特别使用它。)
如果 setRangeText()
之前已 应用 于元素,则将 previouslySelectable 设置为 true,否则设置为 false。
如果 setRangeText()
现在已 应用 于元素,则将 nowSelectable 设置为 true,否则设置为 false。
如果 previouslySelectable 为 false 且 nowSelectable 为 true,则将元素的 文本输入光标位置 设置为文本控件的开头,并 将其选择方向 设置为“none
”。
name
属性表示元素的名称。dirname
属性控制如何提交元素的 方向性。disabled
属性用于使控件不可交互,并防止其值被提交。form
属性用于明确将 input
元素与其 表单所有者 关联。autocomplete
属性控制用户代理如何提供自动填充行为。
HTMLInputElement#indeterminate
所有当前引擎都支持。
indeterminate
IDL 属性必须最初设置为 false。在获取时,它必须返回最后一次设置的值。在设置时,它必须设置为新值。除了更改 复选框 控件的外观之外,它没有其他作用。
所有当前引擎都支持。
accept
、alt
、max
、min
、multiple
、pattern
、placeholder
、required
、size
、src
和 step
IDL 属性必须 反映 同名内容属性的值。dirName
IDL 属性必须 反映 dirname
内容属性的值。readOnly
IDL 属性必须 反映 readonly
内容属性的值。defaultChecked
IDL 属性必须 反映 checked
内容属性的值。defaultValue
IDL 属性必须 反映 value
内容属性的值。
type
IDL 属性必须 反映 同名内容属性的值,仅限于已知的值。maxLength
IDL 属性必须 反映 maxlength
内容属性的值,仅限于非负数。minLength
IDL 属性必须 反映 minlength
内容属性的值,仅限于非负数。
IDL 属性 width
和 height
必须返回图像的渲染宽度和高度,以 CSS 像素 为单位,如果图像正在 渲染;否则返回图像的 自然宽度和高度,以 CSS 像素 为单位,如果图像 可用 但未 渲染;否则返回 0,如果图像 不可用。当 输入
元素的 type
属性不在 图像按钮 状态时,则图像 不可用。 [CSS]
在设置时,它们必须表现得好像它们 反映 了同名内容属性。
IDL 属性 willValidate
、validity
和 validationMessage
以及方法 checkValidity()
、reportValidity()
和 setCustomValidity()
是 约束验证 API 的一部分。IDL 属性 labels
提供元素的 label
列表。IDL 属性和方法 select()
、selectionStart
、selectionEnd
、selectionDirection
、setRangeText()
和 setSelectionRange()
公开了元素的文本选择。IDL 属性 disabled
、form
和 name
是元素表单 API 的一部分。
type
属性的状态 type=hidden
) 所有当前引擎都支持。
当
元素的 属性处于 状态时,本节规则适用。元素 一个用户不打算查看或操作的值。
约束验证:如果
元素的 属性处于 状态,则它 。如果
属性存在并且其值为一个与 " " 进行 匹配的字符串,则该元素的 属性必须被省略。内容属性
和 于此元素。IDL 属性
于此元素,其模式为 。以下内容属性不得指定并且
于该元素: 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 和 。以下 IDL 属性和方法
于该元素: 、 、 、 、 、 、 和 IDL 属性; 、 、 、 和 方法。事件
和 。type=text
) 和 搜索 状态 (type=search
) 所有当前引擎都支持。
所有当前引擎都支持。
当 输入
元素的 type
属性处于 文本 状态或 搜索 状态时,本节规则适用。
文本 状态和 搜索 状态之间的主要区别在于样式:在搜索控件与普通文本控件有所区分的平台上,搜索 状态可能会导致外观与平台的搜索控件一致,而不是像普通文本控件。
如果该元素 可变,则其 值 应该可以由用户编辑。用户代理不得允许用户将 U+000A 换行符 (LF) 或 U+000D 回车符 (CR) 字符插入到该元素的 值 中。
如果该元素 可变,则用户代理应该允许用户更改该元素的书写方向,将其设置为从左到右的书写方向或从右到左的书写方向。如果用户这样做,用户代理必须随后执行以下步骤
如果用户选择了从左到右的书写方向,则将该元素的 dir
属性设置为 "ltr
";如果用户选择了从右到左的书写方向,则设置为 "rtl
"。
将一个元素任务排队 到 用户交互任务源, 给定元素要 触发事件,该事件名为 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()
方法。
以下内容属性不得指定,并且 不应用 于该元素: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()
方法。
type=tel
)所有当前引擎都支持。
当 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) 字符。
与 URL 和 Email 类型不同, 电话 类型不强制执行特定语法。这是故意的;在实践中,电话号码字段往往是自由格式字段,因为有各种各样的有效电话号码。需要强制执行特定格式的系统鼓励使用 pattern
属性或 setCustomValidity()
方法来连接到客户端验证机制。
以下常见 input
元素内容属性、IDL 属性和方法 应用 于该元素:autocomplete
, dirname
, list
, maxlength
, minlength
, pattern
, placeholder
, readonly
, required
, 和 size
内容属性; list
, selectionStart
, selectionEnd
, selectionDirection
, 和 value
IDL 属性; select()
, setRangeText()
, 和 setSelectionRange()
方法。
以下内容属性不得指定,并且不适用于该元素: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()
方法。
type=url
)所有当前引擎都支持。
当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属性和方法适用于该元素:autocomplete
,dirname
,list
,maxlength
,minlength
,pattern
,placeholder
,readonly
,required
,和size
内容属性;list
,selectionStart
,selectionEnd
,selectionDirection
,和value
IDL属性;select()
,setRangeText()
,和setSelectionRange()
方法。
以下内容属性不得指定,并且不适用于该元素: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()
方法。
如果文档包含以下标记
< 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-parsing
和https://streams.spec.whatwg.org/
,那么渲染结果可能如下所示
此示例中的前四个URL由用户在作者指定列表中输入的四个URL组成,它们与用户输入的文本匹配,并以某种实现定义的方式排序(可能是根据用户引用这些URL的频率)。请注意,UA是如何利用值是URL的知识来允许用户省略方案部分并对域名进行智能匹配的。
最后两个URL(以及可能还有更多,因为滚动条指示还有更多值可用)是来自用户代理会话历史记录数据的匹配项。这些数据不会提供给页面DOM。在本例中,UA没有为这些值提供标题。
type=email
)所有当前引擎都支持。
当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 时,用户代理必须运行以下步骤
令 latest values 为元素的 值s 的副本。
从 latest values 中的每个值 删除开头和结尾的 ASCII 空格。
令元素的 值 为连接 latest values 中所有值的结果,使用单个 U+002C COMMA 字符 (,) 将每个值与下一个值分隔开,并保持列表的顺序。
如果指定 value
属性,则该属性的值必须是 有效电子邮件地址列表。
值清理算法 如下所示:
使用元素的 值 按逗号分隔,从每个生成的标记(如果有)中删除开头和结尾的 ASCII 空格,并令元素的 值 为(可能为空的)生成的(可能为空的)标记列表,并保持原始顺序。
令元素的 值 为连接元素的 值 的结果,使用单个 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 属性和方法 适用于 该元素:autocomplete
、dirname
、list
、maxlength
、minlength
、multiple
、pattern
、placeholder
、readonly
、required
和 size
内容属性;list
和 value
IDL 属性;select()
方法。
以下内容属性不得指定,并且 不适用于 该元素:accept
、alt
、checked
、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
、height
、max
、min
、popovertarget
、popovertargetaction
、src
、step
和 width
。
以下 IDL 属性和方法不适用于该元素:checked
、files
、selectionStart
、selectionEnd
、selectionDirection
、valueAsDate
和 valueAsNumber
IDL 属性;setRangeText()
、setSelectionRange()
、stepDown()
和 stepUp()
方法。
type=password
)所有当前引擎都支持。
当一个 input
元素的 type
属性处于 密码 状态时,本节中的规则适用。
该 input
元素表示一个针对该元素的 值 的单行纯文本编辑控件。用户代理应该遮蔽该值,以便除了用户以外的其他人无法看到它。
如果该元素是 可变的,它的 值 应该可以由用户编辑。用户代理不得允许用户在 值 中插入 U+000A 换行符 (LF) 或 U+000D 回车符 (CR) 字符。
如果指定了 value
属性,则其值必须不包含 U+000A 换行符 (LF) 或 U+000D 回车符 (CR) 字符。
以下常见 input
元素内容属性、IDL 属性和方法适用于该元素:autocomplete
、dirname
、maxlength
、minlength
、pattern
、placeholder
、readonly
、required
和 size
内容属性;selectionStart
、selectionEnd
、selectionDirection
和 value
IDL 属性;select()
、setRangeText()
和 setSelectionRange()
方法。
以下内容属性不得指定,并且不适用于该元素:accept
、alt
、checked
、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
、height
、list
、max
、min
、multiple
、popovertarget
、popovertargetaction
、src
、step
和 width
。
以下 IDL 属性和方法不适用于该元素:checked
、files
、list
、valueAsDate
和 valueAsNumber
IDL 属性;stepDown()
和 stepUp()
方法。
type=date
)所有当前引擎都支持。
当一个 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
对象 input,将 Date
对象转换为字符串的算法 如下所示: 返回一个 有效的日期字符串,该字符串表示 input 在 UTC 时区中所表示时间的 日期。
Date 状态(以及后续部分描述的其他日期和时间相关状态)不适用于无法确定相对于当代日历的精确日期和时间的输入值。例如,它不适用于输入诸如“大爆炸后一毫秒”、“侏罗纪早期”或“公元前 250 年左右的冬季”之类的时间。
对于在格里高利历引入之前输入的日期,作者建议不要使用 Date 状态(以及后续部分描述的其他日期和时间相关状态),因为用户代理不需要支持将早期时期的日期和时间转换为格里高利历,而要求用户手动执行此操作会给用户带来过多的负担。(格里高利历的逐步采用是一个复杂的过程,它在不同的国家/地区发生在不同的时间,从 16 世纪中期到 20 世纪初不等。)相反,作者建议使用 select
元素和带有 Number 状态的 input
元素来提供细粒度的输入控件。
以下常见的 input
元素内容属性、IDL 属性和方法 应用 于该元素:autocomplete
、list
、max
、min
、readonly
、required
和 step
内容属性;list
、value
、valueAsDate
和 valueAsNumber
IDL 属性;select()
、stepDown()
和 stepUp()
方法。
以下内容属性不能被指定,并且 不应用 于该元素:accept
、alt
、checked
、dirname
、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
、height
、maxlength
、minlength
、multiple
、pattern
、placeholder
、popovertarget
、popovertargetaction
、size
、src
和 width
。
以下 IDL 属性和方法 不应用 于该元素:checked
、selectionStart
、selectionEnd
和 selectionDirection
IDL 属性;setRangeText()
和 setSelectionRange()
方法。
type=month
)所有当前引擎都支持。
当一个 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
对象 input,将 Date
对象转换为字符串的算法 如下所示:返回一个 有效的月份字符串,表示 input 所代表的时间在 UTC 时区中的 月份。
以下常见的 input
元素内容属性、IDL 属性和方法 应用于 该元素:autocomplete
、list
、max
、min
、readonly
、required
和 step
内容属性;list
、value
、valueAsDate
和 valueAsNumber
IDL 属性;select()
、stepDown()
和 stepUp()
方法。
以下内容属性不得指定,并且 不适用于 该元素:accept
、alt
、checked
、dirname
、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
、height
、maxlength
、minlength
、multiple
、pattern
、placeholder
、popovertarget
、popovertargetaction
、size
、src
和 width
。
以下 IDL 属性和方法 不适用于 该元素:checked
、files
、selectionStart
、selectionEnd
和 selectionDirection
IDL 属性;setRangeText()
和 setSelectionRange()
方法。
type=week
)当 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
对象 input,将 Date
对象转换为字符串的算法 如下所示:返回一个 有效的周字符串,表示 input 所代表的时间在 UTC 时区中的 周。
以下是一些适用于 input
元素的常见内容属性、IDL 属性和方法:autocomplete
、list
、max
、min
、readonly
、required
和 step
内容属性;list
、value
、valueAsDate
和 valueAsNumber
IDL 属性;select()
、stepDown()
和 stepUp()
方法。
以下内容属性不得指定,也不 适用 于该元素:accept
、alt
、checked
、dirname
、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
、height
、maxlength
、minlength
、multiple
、pattern
、placeholder
、popovertarget
、popovertargetaction
、size
、src
和 width
。
以下 IDL 属性和方法 不适用 于该元素:checked
、files
、selectionStart
、selectionEnd
和 selectionDirection
IDL 属性;setRangeText()
和 setSelectionRange()
方法。
type=time
)所有当前引擎都支持。
当 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 属性和方法:autocomplete
、list
、max
、min
、readonly
、required
和 step
内容属性;list
、value
、valueAsDate
和 valueAsNumber
IDL 属性;select()
、stepDown()
和 stepUp()
方法。
以下内容属性不得指定,也不适用于该元素:accept
、alt
、checked
、dirname
、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
、height
、maxlength
、minlength
、multiple
、pattern
、placeholder
、popovertarget
、popovertargetaction
、size
、src
和 width
。
以下 IDL 属性和方法不适用于该元素:checked
、files
、selectionStart
、selectionEnd
和 selectionDirection
IDL 属性;setRangeText()
和 setSelectionRange()
方法。
type=datetime-local
)所有当前引擎都支持。
当 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 属性和方法适用于 该元素:autocomplete
、list
、max
、min
、readonly
、required
和 step
内容属性;list
、value
和 valueAsNumber
IDL 属性;select()
、stepDown()
和 stepUp()
方法。
以下内容属性不得指定,且不适用于该元素:accept
,alt
,checked
,dirname
,formaction
,formenctype
,formmethod
,formnovalidate
,formtarget
,height
,maxlength
,minlength
,multiple
,pattern
,placeholder
,popovertarget
,popovertargetaction
,size
,src
,和width
。
以下 IDL 属性和方法不适用于该元素:checked
,files
,selectionStart
,selectionEnd
,selectionDirection
,和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 >
type=number
)所有当前引擎都支持。
当input
元素的type
属性处于数字状态时,本节中的规则适用。
该input
元素表示一个用于将元素的value设置为表示数字的字符串的控件。
如果该元素是可变的,用户代理应该允许用户更改其value所表示的数字,该数字是通过将浮点数解析规则应用于它得到的。用户代理不得允许用户将value设置为非空字符串,该字符串不是一个有效的浮点数。如果用户代理提供了一个用于选择数字的用户界面,则value必须设置为用户选择所表示数字的浮点数最佳表示。用户代理应该允许用户将value设置为空字符串。
**约束验证**:当用户界面描述了用户代理无法转换为有效的浮点数的输入时,该控件处于输入错误状态。
本规范没有定义用户代理应该使用什么用户界面;鼓励用户代理供应商考虑什么最符合其用户的需求。例如,在波斯语或阿拉伯语市场中的用户代理可能支持波斯语和阿拉伯语数字输入(将其转换为如上所述提交所需的格式)。类似地,为罗马人设计的用户代理可能以罗马数字而不是十进制数字显示值;或者(更现实地),为法国市场设计的用户代理可能以千分位数之间的撇号和十进制数之前的逗号显示值,并允许用户以这种方式输入值,在内部将其转换为上面描述的提交格式。
如果指定了value
属性且该属性不为空,则该属性的值必须是一个有效的浮点数。
**值清理算法如下所示**:如果元素的value不是一个有效的浮点数,则将其设置为空字符串。
如果指定了min
属性,则该属性的值必须是一个有效的浮点数。如果指定了max
属性,则该属性的值必须是一个有效的浮点数。
步长比例因子为 1。默认步长为 1(仅允许用户选择整数,除非步长基数具有非整数值)。
当元素处于步长不匹配状态时,用户代理可以将元素的value四舍五入到最接近的数字,对于该数字,元素不会处于步长不匹配状态。如果有两个这样的数字,鼓励用户代理选择最接近正无穷大的那个。
**将字符串转换为数字的算法,给定一个字符串input,如下所示**:如果将浮点数解析规则应用于input会导致错误,则返回错误;否则,返回结果数字。
**将数字转换为字符串的算法,给定一个数字input,如下所示**:返回一个有效的浮点数,它表示input。
以下常见input
元素内容属性、IDL 属性和方法适用于该元素:autocomplete
,list
,max
,min
,placeholder
,readonly
,required
,和step
内容属性;list
,value
,和valueAsNumber
IDL 属性;select()
,stepDown()
,和stepUp()
方法。
以下内容属性不得指定,且不适用于该元素:accept
,alt
,checked
,dirname
,formaction
,formenctype
,formmethod
,formnovalidate
,formtarget
,height
,maxlength
,minlength
,multiple
,pattern
,popovertarget
,popovertargetaction
,size
,src
,和width
。
以下 IDL 属性和方法不适用于该元素:checked
、files
、selectionStart
、selectionEnd
、selectionDirection
和 valueAsDate
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
可能是正确选择(可能带有一个 inputmode
或 pattern
属性)。
type=range
)所有当前引擎都支持。
当 input
元素的 type
属性处于 范围 状态时,本节中的规则适用。
该 input
元素 表示一个用于将元素的 value 设置为表示数字的字符串的控件,但前提是确切的值不重要,允许 UA 提供比 数字 状态更简单的界面。
如果元素是 可变 的,用户代理应允许用户更改其 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 : 75 px ; width : 49 px ; background : #D5CCBB; color : black; }
... 可能渲染为
请注意,UA 如何从样式表指定的 height 和 width 属性的比率确定控件的方向。颜色也是从样式表中推导出来的。但是,刻度线是从标记中推导出来的。特别是,step
属性没有影响刻度线的位置,UA 决定只使用作者指定的完成值,然后在两端添加更长的刻度线。
还请注意,无效值 ++50
被忽略了。
再举一个例子,考虑以下标记片段
< input name = x type = range min = 100 max = 700 step = 9.09090909 value = 509.090909 >
用户代理可以用各种方式显示,例如
或者,或者,例如
用户代理可以根据样式表中给出的尺寸选择要显示的方式。这将允许它保持刻度线的相同分辨率,尽管宽度有所不同。
最后,以下是一个带有两个标记值的范围控件示例
< input type = "range" name = "a" list = "a-values" >
< datalist id = "a-values" >
< option value = "10" label = "Low" >
< option value = "90" label = "High" >
</ datalist >
使用使控件垂直绘制的样式,它可能看起来如下
在这种状态下,即使在用户输入期间,也会强制执行范围和步长约束,并且没有办法将值设置为为空字符串。
如果指定了 min
属性,则其值必须为 有效浮点数。默认最小值 为 0。如果指定了 max
属性,则其值必须为 有效浮点数。默认最大值 为 100。
步长比例因子 为 1。默认步长 为 1(仅允许整数,除非 min
属性具有非整数值)。
将字符串转换为数字的算法,给定字符串 input,如下所示:如果将 解析浮点数值的规则 应用于 input 会导致错误,则返回错误;否则,返回结果数字。
将数字转换为字符串的算法,给定数字 input,如下所示:返回 作为浮点数的最佳表示,即 input。
以下通用输入
元素内容属性、IDL 属性和方法应用于该元素:autocomplete
,list
,max
,min
,和step
内容属性;list
,value
,和valueAsNumber
IDL 属性;stepDown()
和stepUp()
方法。
以下内容属性不得指定,并且不适用于该元素:accept
,alt
,checked
,dirname
,formaction
,formenctype
,formmethod
,formnovalidate
,formtarget
,height
,maxlength
,minlength
,multiple
,pattern
,placeholder
,popovertarget
,popovertargetaction
,readonly
,required
,size
,src
,和width
。
以下 IDL 属性和方法不适用于该元素:checked
,files
,selectionStart
,selectionEnd
,selectionDirection
,和valueAsDate
IDL 属性;select()
,setRangeText()
,和setSelectionRange()
方法。
type=color
)所有当前引擎都支持。
当输入
元素的type
属性处于颜色 状态时,本节中的规则适用。
输入
元素表示一个颜色选择器,用于将元素的值设置为表示简单颜色的字符串。
在此状态下,始终会选择一种颜色,并且无法将值设置为空字符串。
如果该元素是可变的,则用户代理应允许用户更改其值所表示的颜色,该值可通过对解析简单颜色值的规则应用于该值来获得。用户代理不得允许用户将值设置为不是有效的 lowercase 简单颜色的字符串。如果用户代理为选择颜色提供了用户界面,则值必须设置为使用序列化简单颜色值的规则对用户的选择进行处理的结果。用户代理不得允许用户将值设置为空字符串。
此类元素element的输入激活行为是显示选择器(如果适用),用于element。
约束验证:当用户界面描述用户代理无法转换为有效的 lowercase 简单颜色的输入时,该控件处于错误输入状态。
value
属性(如果指定且不为空)必须具有一个有效的简单颜色值。
值清理算法如下:如果元素的值是有效的简单颜色,则将其设置为元素的值转换为 ASCII lowercase;否则,将其设置为字符串 "#000000
"。
以下通用输入
元素内容属性和 IDL 属性应用于该元素:autocomplete
和list
内容属性;list
和value
IDL 属性;select()
方法。
以下内容属性不得指定,并且不适用于该元素:accept
,alt
,checked
,dirname
,formaction
,formenctype
,formmethod
,formnovalidate
,formtarget
,height
,max
,maxlength
,min
,minlength
,multiple
,pattern
,placeholder
,popovertarget
,popovertargetaction
,readonly
,required
,size
,src
,step
,和width
。
以下 IDL 属性和方法不适用于该元素:checked
,files
,selectionStart
,selectionEnd
,selectionDirection
,valueAsDate
和valueAsNumber
IDL 属性;setRangeText()
,setSelectionRange()
,stepDown()
,和stepUp()
方法。
type=checkbox
)所有当前引擎都支持。
当 input
元素的 type
属性处于 复选框 状态时,本节中的规则适用。
该 input
元素 表示 一个双状态控件,它代表元素的 选中 状态。如果元素的 选中 状态为真,则控件表示正向选择,如果为假,则表示负向选择。如果元素的 indeterminate
IDL 属性设置为 true,则控件的选择应被遮蔽,就像控件处于第三种不确定的状态一样。
该控件永远不是真正的三态控件,即使元素的 indeterminate
IDL 属性设置为 true。该 indeterminate
IDL 属性只提供第三种状态的外观。
该 输入激活行为 是执行以下步骤
如果该元素不是 已连接,则返回。
约束验证:如果该元素是 必需 并且它的 选中 状态为假,则该元素 正在被遗漏。
input.indeterminate [ = value ]
当设置时,会覆盖 复选框 控件的渲染,使当前值不可见。
以下常见的 input
元素内容属性和 IDL 属性 适用 于该元素:checked
和 required
内容属性;checked
和 value
IDL 属性。
以下内容属性不得指定,也不 适用于 该元素:accept
,alt
,autocomplete
,dirname
,formaction
,formenctype
,formmethod
,formnovalidate
,formtarget
,height
,list
,max
,maxlength
,min
,minlength
,multiple
,pattern
,placeholder
,popovertarget
,popovertargetaction
,readonly
,size
,src
,step
和 width
。
以下 IDL 属性和方法不 适用于 该元素:files
,list
,selectionStart
,selectionEnd
,selectionDirection
,valueAsDate
和 valueAsNumber
IDL 属性;select()
,setRangeText()
,setSelectionRange()
,stepDown()
和 stepUp()
方法。
type=radio
)所有当前引擎都支持。
当 input
元素的 type
属性处于 单选按钮 状态时,本节中的规则适用。
该 input
元素 表示 一个控件,当与其他 input
元素一起使用时,会形成一个 单选按钮组,其中只有一个控件可以将其 选中 状态设置为 true。如果元素的 选中 状态为真,则控件表示该组中选中的控件,如果为假,则表示该组中未选中的控件。
包含 input
元素 a 的 单选按钮组 还包含所有满足以下所有条件的其他 input
元素 b
input
元素 b 的 type
属性处于 单选按钮 状态。name
属性,它们的 name
属性不为空,并且 a 的 name
属性的值等于 b 的 name
属性的值。一个 树 不得包含一个 input
元素,其 单选按钮组 仅包含该元素。
当发生以下任何现象时,如果元素的 选中 状态在发生后为 true,则同一 单选按钮组 中所有其他元素的 选中 状态必须设置为 false
该 输入激活行为 是执行以下步骤
如果该元素不是 已连接,则返回。
约束验证:如果 单选按钮组 中的某个元素是 必填 的,并且 单选按钮组 中所有 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 属性应用 于该元素:checked
和 required
内容属性;checked
和 value
IDL 属性。
以下内容属性不得指定且不应用 于该元素:accept
,alt
,autocomplete
,dirname
,formaction
,formenctype
,formmethod
,formnovalidate
,formtarget
,height
,list
,max
,maxlength
,min
,minlength
,multiple
,pattern
,placeholder
,popovertarget
,popovertargetaction
,readonly
,size
,src
,step
以及 width
。
以下 IDL 属性和方法不应用 于该元素:files
,list
,selectionStart
,selectionEnd
,selectionDirection
,valueAsDate
以及 valueAsNumber
IDL 属性;select()
,setRangeText()
,setSelectionRange()
,stepDown()
以及 stepUp()
方法。
type=file
)所有当前引擎都支持。
当 input
元素的 type
属性处于 文件上传 状态时,本节中的规则适用。
input
元素表示 一系列 选定的文件,每个文件都包含文件名、文件类型和文件体(文件内容)。
文件名不得包含 路径组件,即使用户选择了整个目录层次结构或来自不同目录的具有相同名称的多个文件。出于 文件上传 状态的目的,路径组件 是文件名中由 U+005C 反斜杠字符(\)字符分隔的那些部分。
除非 multiple
属性被设置,否则 选定的文件 列表中不得存在超过一个文件。
此类元素 element 的 输入激活行为 是显示选择器(如果适用),用于 element。
如果元素是 可变 的,用户代理应允许用户以其他方式更改列表上的文件,例如,通过拖放添加或删除文件。当用户这样做时,用户代理必须更新元素的文件选择。
如果元素不是 可变 的,用户代理不得允许用户更改元素的选择。
要更新元素的文件选择,对于元素 element
在元素任务队列中排队,在给定 element 和以下步骤的情况下,在用户交互任务源 上。
约束验证:如果元素是 必填 的,并且 选定的文件 列表为空,则该元素处于 缺失状态。
所有当前引擎都支持。
所有当前引擎都支持。
accept
属性可以指定以向用户代理提供有关将接受哪些文件类型的提示。
如果指定了该属性,则该属性必须包含一个 以逗号分隔的令牌集,每个令牌必须与以下内容中的一个进行 ASCII 不区分大小写 匹配
audio/*
”video/*
”image/*
”这些标记不能是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
属性的要求。
由于历史原因,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 属性应用于该元素:accept
、multiple
和 required
内容属性;files
和 value
IDL 属性;select()
方法。
以下内容属性不能被指定,并且不应用于该元素:alt
、autocomplete
、checked
、dirname
、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
、height
、list
、max
、maxlength
、min
、minlength
、pattern
、popovertarget
、popovertargetaction
、placeholder
、readonly
、size
、src
、step
和 width
。
元素的value
属性必须省略。
以下 IDL 属性和方法不应用于该元素:checked
、list
、selectionStart
、selectionEnd
、selectionDirection
、valueAsDate
和 valueAsNumber
IDL 属性;setRangeText()
、setSelectionRange()
、stepDown()
和 stepUp()
方法。
type=submit
)所有当前引擎都支持。
当input
元素的type
属性处于提交按钮 状态时,本节中的规则适用。
该input
元素表示一个按钮,当激活时,它会提交表单。如果该元素具有value
属性,则按钮的标签必须是该属性的值;否则,它必须是实现定义的字符串,表示“提交”或类似的意思。该元素是按钮,特别是提交按钮。
由于默认标签是实现定义的,并且按钮的宽度通常取决于按钮的标签,因此按钮的宽度可能会泄漏一些可指纹识别的信息。这些位可能与用户代理的身份和用户的区域设置高度相关。
给定event,该元素的输入激活行为如下
该formaction
、formenctype
、formmethod
、formnovalidate
和 formtarget
属性是用于表单提交的属性。
该formnovalidate
属性可用于创建不会触发约束验证的提交按钮。
以下常见的input
元素内容属性和 IDL 属性应用于该元素:dirname
、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
、popovertarget
和 popovertargetaction
内容属性;value
IDL 属性。
以下内容属性不得指定,也不适用于该元素:accept
、alt
、autocomplete
、checked
、height
、list
、max
、maxlength
、min
、minlength
、multiple
、pattern
、placeholder
、readonly
、required
、size
、src
、step
以及 width
。
以下 IDL 属性和方法也不适用于该元素:checked
、files
、list
、selectionStart
、selectionEnd
、selectionDirection
、valueAsDate
和 valueAsNumber
IDL 属性;select()
、setRangeText()
、setSelectionRange()
、stepDown()
和 stepUp()
方法。
type=image
)所有当前引擎都支持。
当 input
元素的 type
属性处于 图像按钮 状态时,本节中的规则适用。
input
元素 代表 用户可以选择坐标并提交表单的图像,或者代表用户可以提交表单的按钮。该元素是 按钮,具体来说是 提交按钮。
该坐标通过发送两个元素条目发送到服务器,在表单提交期间,这些条目源自控件的名称,但将 ".x
" 和 ".y
" 附加到名称上,分别与坐标的 x 和 y 分量对应。
所有当前引擎都支持。
该图像由 src
属性给出。 src
属性必须存在,并且必须包含一个 有效的非空 URL,该 URL 可能包含空格,引用一个非交互式的、可选的动画图像资源,该资源既不是分页的,也不是脚本化的。
当以下任何事件发生时
input
元素的 type
属性首先被设置为 图像按钮 状态(可能是在元素首次创建时),并且 src
属性存在input
元素的 type
属性被更改回 图像按钮 状态,并且 src
属性存在,并且自上次 type
属性处于 图像按钮 状态以来,它的值已经改变input
元素的 type
属性处于 图像按钮 状态,并且 src
属性被设置或更改然后,除非用户代理无法支持图像,或者它对图像的支持已被禁用,或者用户代理仅按需获取图像,或者 src
属性的值为空字符串,否则执行以下步骤
如果 url 失败,则返回。
令 request 为一个新的 请求,其 URL 为 url,客户端 为元素的 节点文档 的 相关设置对象,目标 为 "image
",发起者类型 为 "input
",凭据模式 为 "include
",并且其 使用 URL 凭据标志 已设置。
获取 request,processResponseEndOfBody 设置为以下步骤,给定 响应 response
获取图像必须 延迟元素的节点文档的 load 事件,直到 任务(该任务由网络任务源排队,并在资源已获取后定义)已运行。
如果图像已成功获取,没有网络错误,并且图像的类型是受支持的图像类型,并且图像是该类型的有效图像,则该图像被称为 可用。如果在图像完全下载之前,此情况为真,则在获取图像期间,网络任务源排队的每个 任务 必须适当地更新图像的呈现。
用户代理应应用 图像嗅探规则 来确定图像的类型,其中图像的 相关 Content-Type 标头 提供了 官方类型。如果未应用这些规则,则图像的类型必须是图像的 相关 Content-Type 标头 中给出的类型。
用户代理不得使用 input
元素来支持非图像资源。用户代理不得运行嵌入在图像资源中的可执行代码。用户代理必须仅显示多页资源的第一页。用户代理不得允许该资源以交互方式运行,但应遵守该资源中的任何动画。
所有当前引擎都支持。
alt
属性 为无法使用图像的用户和用户代理提供按钮的文字标签。
属性必须存在,并且必须包含一个非空字符串,该字符串提供如果图像不可用,则等效按钮的适当标签。alt
如果
属性已设置,并且图像 src
可用
且用户代理配置为显示该图像,则该元素 代表
用于从
属性指定的图像中选择 坐标 的控件。在这种情况下,如果该元素 src
可变
,则用户代理应允许用户选择此 坐标。
否则,该元素 代表
一个提交按钮,其标签由
属性的值给出。alt
元素的 输入激活行为 给定 event
如下所示
如果该元素没有 表单所有者,则返回。
如果用户在明确选择坐标时激活了控件,则将该元素的 选定坐标 设置为该坐标。
这只有在上面概述的条件下才有可能,当该元素 代表
用于选择此类坐标的控件时。即使这样,用户也可能在没有明确选择坐标的情况下激活控件。
提交
该元素的 表单所有者,来自该元素,其中 userInvolvement
设置为 event
的 用户导航参与。
该元素的 选定坐标
由一个 x
组件和一个 y
组件组成。它最初为 (0, 0)。坐标表示相对于元素图像边缘的位置,坐标空间的正 x
方向向右,正 y
方向向下。
x
组件必须是 有效整数,表示范围内的数字 x
:−(borderleft
+paddingleft
) ≤ x
≤ width
+borderright
+paddingright
,其中 width
是图像的渲染宽度,borderleft
是图像左侧边框的宽度,paddingleft
是图像左侧填充的宽度,borderright
是图像右侧边框的宽度,paddingright
是图像右侧填充的宽度,所有尺寸都以 CSS 像素 为单位。
y
组件必须是 有效整数,表示范围内的数字 y
:−(bordertop
+paddingtop
) ≤ y
≤ height
+borderbottom
+paddingbottom
,其中 height
是图像的渲染高度,bordertop
是图像上方的边框宽度,paddingtop
是图像上方的填充宽度,borderbottom
是图像下方的边框宽度,paddingbottom
是图像下方的填充宽度,所有尺寸都以 CSS 像素 为单位。
如果缺少边框或填充,其宽度为零 CSS 像素。
、formaction
、formenctype
、formmethod
和 formnovalidate
属性是 用于表单提交的属性。formtarget
image
.width
[ = value
]
image
.height
[ = value
]
这些属性返回图像的实际渲染尺寸,如果尺寸未知,则返回 0。
它们可以被设置,以更改相应的 content 属性。
以下公共
元素 content 属性和 IDL 属性 input
应用
于该元素:
、alt
、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
、height
、popovertarget
、popovertargetaction
和 src
content 属性;width
IDL 属性。value
以下 content 属性不能被指定,并且 不应用
于该元素:
、accept
、autocomplete
、checked
、dirname
、list
、max
、maxlength
、min
、minlength
、multiple
、pattern
、placeholder
、readonly
、required
和 size
。step
该元素的
属性必须被省略。value
以下 IDL 属性和方法 不应用
于该元素:
、checked
、files
、list
、selectionStart
、selectionEnd
、selectionDirection
和 valueAsDate
IDL 属性;valueAsNumber
、select()
、setRangeText()
、setSelectionRange()
和 stepDown()
方法。stepUp()
此状态行为的许多方面类似于
元素的行为。鼓励读者阅读该部分,其中许多相同的要求都进行了更详细的描述。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
"。
(在这个例子中,假设对于看不到地图的用户,他们只能看到一个标记为 "显示位置列表" 的按钮,单击该按钮将导致服务器显示一个位置列表供用户选择,而不是地图。)
重置按钮
状态 (type=reset
)所有当前引擎都支持。
当
元素的 input
属性处于 type
重置按钮
状态时,本节中的规则适用。
元素 input
代表
一个按钮,当激活时,重置表单。如果该元素具有
属性,则该按钮的标签必须是该属性的值;否则,它必须是 value
实现定义
的字符串,意思是 "重置" 或类似的东西。该元素是一个 按钮
。
由于默认标签是 实现定义
的,并且按钮的宽度通常取决于按钮的标签,因此按钮的宽度可能会泄露一些可指纹化的信息。这些信息很可能与用户代理的标识和用户的区域设置密切相关。
该元素的 输入激活行为 如下所示
约束验证:元素被 禁止约束验证。
IDL 属性 应用 于此元素,并且处于 默认 模式。value
以下常见的
元素内容属性 应用 于元素:input
和 popovertarget
。popovertargetaction
以下内容属性不能指定,并且 不应用 于元素:
,accept
,alt
,autocomplete
,checked
,dirname
,formaction
,formenctype
,formmethod
,formnovalidate
,formtarget
,height
,list
,max
,maxlength
,min
,minlength
,multiple
,pattern
,placeholder
,readonly
,required
,size
,src
,和 step
。width
以下 IDL 属性和方法 不应用 于元素:
,checked
,files
,list
,selectionStart
,selectionEnd
,selectionDirection
,和 valueAsDate
IDL 属性;valueAsNumber
,select()
,setRangeText()
,setSelectionRange()
,和 stepDown()
方法。stepUp()
type=button
)所有当前引擎都支持。
当
元素的 input
属性处于 按钮 状态时,本节中的规则适用。type
元素 代表 一个没有默认行为的按钮。按钮的标签必须在 input
属性中提供,尽管它可能是空字符串。如果元素有 value
属性,按钮的标签必须是该属性的值;否则,它必须为空字符串。该元素是 按钮。value
该元素没有 输入激活行为。
约束验证:该元素被 禁止约束验证。
IDL 属性 应用 于此元素,并且处于 默认 模式。value
以下常见的
元素内容属性 应用 于元素:input
和 popovertarget
。popovertargetaction
以下内容属性不能指定,并且 不应用 于元素:
,accept
,alt
,autocomplete
,checked
,dirname
,formaction
,formenctype
,formmethod
,formnovalidate
,formtarget
,height
,list
,max
,maxlength
,min
,minlength
,multiple
,pattern
,placeholder
,readonly
,required
,size
,src
,和 step
。width
以下 IDL 属性和方法 不应用 于元素:
,checked
,files
,list
,selectionStart
,selectionEnd
,selectionDirection
,和 valueAsDate
IDL 属性;valueAsNumber
,select()
,setRangeText()
,setSelectionRange()
,和 stepDown()
方法。stepUp()
本节是非规范性的。
向用户显示的日期、时间和数字控件的格式与用于表单提交的格式无关。
鼓励浏览器使用用户界面,根据
元素的 语言 或用户的首选语言环境的约定来显示日期、时间和数字。使用页面的语言环境将确保与页面提供的数据一致。input
例如,如果一个美式英语页面声称太阳马戏团的演出将在 02/03 举行,但他们的浏览器配置为使用英式英语语言环境,只在购票日期选择器中显示 03/02 的日期,这对用户来说将是令人困惑的。使用页面的语言环境至少可以确保日期在所有地方以相同的格式显示。(当然,用户仍然有可能迟到一个月,但对于这种文化差异,我们只能做这么多......)
input
元素属性这些属性只有在
元素的 input
属性处于其定义声明该属性 应用 的状态时才 应用。当属性 不应用 于 type
元素时,用户代理必须 忽略 该属性,无论以下要求和定义如何。input
maxlength
和 minlength
属性所有当前引擎都支持。
所有当前引擎都支持。
所有当前引擎都支持。
所有当前引擎都支持。
所有当前引擎都支持。
当 maxlength
属性 生效 时,它是一个 表单控件 maxlength
属性.
所有当前引擎都支持。
当 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 >
size
属性在视觉呈现中,size
属性指示用户代理允许用户在编辑元素的 值 时看到的字符数。
如果指定了 size
属性,则它的值必须是 有效的非负整数 且大于零。
如果属性存在,则它的值必须使用 非负整数解析规则 解析。如果结果是一个大于零的数字,则用户代理应确保至少有那么多字符可见。
readonly
属性所有当前引擎都支持。
所有当前引擎都支持。
所有当前引擎都支持。
readonly
属性是一个 布尔属性,它控制用户是否可以编辑表单控件。当指定时,元素 不可变。
约束验证:如果在 input
元素上指定了 readonly
属性,则该元素 被禁止进行约束验证.
disabled
和 readonly
之间的区别在于,只读控件仍然可以工作,而禁用控件通常不能作为控件工作,直到它们被启用。这在规范的其它地方用规范性要求来详细说明,这些要求引用了 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 >
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 >
为了避免对 单选按钮组 是否必需产生混淆,建议作者在组中的所有单选按钮上指定该属性。实际上,一般来说,建议作者避免创建最初没有选中任何控件的单选按钮组,因为用户无法返回到这种状态,因此通常被认为是糟糕的用户界面。
multiple
属性所有当前引擎都支持。
所有当前引擎都支持。
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 >
pattern
属性所有当前引擎都支持。
所有当前引擎都支持。
pattern
属性指定了一个正则表达式,用来检查控件的 值,或者当 multiple
属性 适用 并被设置时,检查控件的 值。
如果指定了,该属性的值必须与 JavaScript Pattern[+UnicodeSetsMode, +N]
生成式匹配。
已编译的模式正则表达式
是一个
元素的 JavaScript input
对象。它的确定方式如下RegExp
如果元素没有指定
属性,则返回空值。该元素没有 pattern
已编译的模式正则表达式
。
令 pattern
为该元素的
属性值。pattern
令 regexpCompletion
为 RegExpCreate(pattern, "
。v
")
如果 regexpCompletion
是一个 意外完成
,则返回空值。该元素没有 已编译的模式正则表达式
。
用户代理应将此错误记录在开发者控制台中,以帮助调试。
令 anchoredPattern
为字符串 "^(?:
" 后跟 pattern
,再后跟 ")$
"。
返回 ! 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
min
和 max
属性所有当前引擎都支持。
所有当前引擎都支持。
一些表单控件可以应用明确的约束,限制用户可以提供的值的范围。通常,这样的范围是线性的和连续的。然而,一个表单控件可以 具有周期性域
,在这种情况下,表单控件的最大可能范围是有限的,作者可以在其中指定跨越边界的明确范围。
具体来说,
控件的最大范围是午夜到午夜(24 小时),作者可以设置连续线性范围(例如晚上 9 点到 11 点)和跨越午夜的不连续范围(例如晚上 11 点到凌晨 1 点)。type=time
和 min
属性指示元素允许的值范围。max
它们的语法由定义
属性当前状态的部分定义。type
如果元素具有
属性,并且将 min
将字符串转换为数字的算法
应用于
属性的值的结果是一个数字,则该数字是元素的 min
最小值
;否则,如果
属性的当前状态定义了 type
默认最小值
,则该值是 最小值
;否则,该元素没有 最小值
。
如果元素具有
属性,并且将 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" >
step
属性所有当前引擎都支持。
step
属性指示对 值 或 值 的预期(和必需)粒度,通过限制允许的值。定义 type
属性当前状态的部分还定义了 默认步长,步长比例因子,以及在某些情况下 默认步长基数,这些在处理属性时使用,如下所述。
如果指定了 step
属性,则其值必须是 有效的浮点数,其 解析 为大于零的数字,或者其值必须与字符串“any
”进行 ASCII 不区分大小写 匹配。
该属性提供了元素的 允许的值步长,如下所示
否则,如果属性的值与字符串“any
”进行 ASCII 不区分大小写 匹配,则没有 允许的值步长。
否则,如果 解析浮点数的规则 在应用于属性的值时返回错误、零或小于零的数字,则 允许的值步长 是 默认步长 乘以 步长比例因子。
步长基数 是以下算法返回的值
如果元素具有 min
内容属性,并且将 将字符串转换为数字的算法 应用于 min
内容属性的值的结果不是错误,则返回该结果。
如果元素具有 value
内容属性,并且将 将字符串转换为数字的算法 应用于 value
内容属性的值的结果不是错误,则返回该结果。
返回零。
约束验证:当元素具有 允许的值步长,并且将 将字符串转换为数字的算法 应用于元素的 值 所得字符串的结果是一个数字,并且从该数字减去 步长基数 的结果不是 允许的值步长 的整数倍,则该元素 出现步长不匹配。
以下范围控件只接受 0..1 范围内的值,并且允许该范围内的 256 个步长
< input name = opacity type = range min = 0 max = 1 step = 0.00392156863 >
以下控件允许选择一天中的任何时间,并允许任何精度(例如,千分之一秒或更高精度)
< input name = favtime type = time step = any >
通常,时间控件的精度限制为一分钟。
list
属性所有当前引擎都支持。
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 >
然后,键入 "arrow" 或 "=>" 将过滤列表以显示标签为 "arrow function" 和 "async arrow function" 的条目。键入 "generator" 或 "*" 将过滤列表以显示标签为 "generator function" 和 "async generator function" 的条目。
与往常一样,用户代理可以自由地做出适合其特定要求和用户特定情况的用户界面决策。但是,从历史上看,这对于实现者、Web 开发人员和用户来说一直是一个混乱的领域,因此我们在上面给出了一些“应该”建议。
如何处理用户对建议的选择取决于元素是仅接受单个值的控件,还是接受多个值。
multiple
属性,或者如果multiple
属性不适用type
属性处于Email 状态,并且元素指定了multiple
属性当用户选择一个建议时,用户代理必须要么向input
元素的values添加一个新的条目,其值为所选建议的value,要么更改input
元素的values中的现有条目,使其具有由所选建议的value给出的值,就好像用户自己添加了一个具有该值的条目,或者编辑了一个现有条目使其成为该值一样。哪种行为将被应用取决于实现定义的方式。
此 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
元素有任何影响。
placeholder
属性所有当前引擎都支持。
所有当前引擎都支持。
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 = " ‫ رقم الهاتف 1 ‮ " >
< input name = t2 type = tel placeholder = " ‫ رقم الهاتف 2 ‮ " >
为了更清晰,以下是使用数字字符引用而不是内联阿拉伯语的相同示例
< input name = t1 type = tel placeholder = " ‫ رقم الهاتف 1 ‮ " >
< input name = t2 type = tel placeholder = " ‫ رقم الهاتف 2 ‮ " >
input
元素 APIinput.value [ = value ]
返回表单控件的当前value。
可以设置,以更改值。
如果控件是文件上传控件,并且将其设置为除空字符串之外的任何值,则会抛出"InvalidStateError
" DOMException
。
input.checked [ = value ]
返回表单控件的当前checkedness。
可以设置,以更改checkedness。
input.files [ = files ]
所有当前引擎都支持。
所有当前引擎都支持。
如果控件不是文件控件,则返回 null。
input.valueAsDate [ = value ]
返回一个 Date
对象,表示表单控件的 值(如果适用);否则,返回 null。
可以设置,以更改值。
如果控件不是基于日期或时间的,则抛出 "InvalidStateError
" DOMException
。
input.valueAsNumber [ = value ]
返回一个数字,表示表单控件的 值(如果适用);否则,返回 NaN。
可以设置,更改值。将其设置为 NaN 将使基础值设置为空字符串。
如果控件既不是基于日期或时间的,也不是数字,则抛出 "InvalidStateError
" DOMException
。
input.stepUp([ n ])
input.stepDown([ n ])
通过 step
属性中给出的值乘以 n 来更改表单控件的 值。n 的默认值为 1。
如果控件既不是基于日期或时间的,也不是数字,或者如果 step
属性的值为 "any
",则抛出 "InvalidStateError
" DOMException
。
input.list
input.showPicker()
显示 input 的任何适用选择器 UI,以便用户可以选择值。(如果未为给定控件实现选择器 UI,则此方法不会执行任何操作。)
如果 input 不是 可变的,则抛出 "InvalidStateError
" DOMException
。
如果在没有 瞬态用户激活 的情况下调用,则抛出 "NotAllowedError
" DOMException
。
如果 input 位于跨域 iframe
中,则抛出 "SecurityError
" DOMException
,除非 input 处于 文件上传 或 颜色 状态。
value
IDL 属性允许脚本操作 input
元素的 值。该属性处于以下模式之一,这些模式定义了其行为
获取时,返回元素的当前 值。
设置时
获取时,如果元素具有 value
内容属性,则返回该属性的值;否则,返回空字符串。
设置时,将元素的 value
内容属性的值设置为新值。
获取时,如果元素具有 value
内容属性,则返回该属性的值;否则,返回字符串 "on
"。
设置时,将元素的 value
内容属性的值设置为新值。
获取时,返回字符串 "C:\fakepath\
",后跟列表中第一个文件的名称 选中文件(如果有),或者如果列表为空,则返回空字符串。
设置时,如果新值为 "on
",则清空列表 选中文件;否则,抛出 "InvalidStateError
" DOMException
。
此 "fakepath" 要求是历史上的一个不幸的意外。有关更多信息,请参见 文件上传状态部分中的示例。
checked
IDL 属性允许脚本操作 input
元素的 选中状态。获取时,它必须返回元素的当前 选中状态;设置时,它必须将元素的 选中状态 设置为新值,并将元素的 脏选中状态标志 设置为 true。
files
IDL 属性允许脚本访问元素的 选中文件。
获取时,如果 IDL 属性 适用,它必须返回一个 FileList
对象,该对象表示当前 选中文件。直到 选中文件 列表更改之前,必须返回同一个对象。如果 IDL 属性 不适用,则它必须返回 null。 [FILEAPI]
设置时,它必须运行以下步骤
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)
方法时,必须运行以下算法
如果 stepDown()
和 stepUp()
方法 不适用,如 input
元素的 type
属性当前状态所定义,则抛出一个 "InvalidStateError
" DOMException
。
如果元素没有 允许的值步长,则抛出一个 "InvalidStateError
" DOMException
。
如果元素有 最小值 和 最大值,并且没有大于或等于元素的 最小值 且小于或等于元素的 最大值 的值,当从 步长基数 中减去时,是 允许的值步长 的整数倍,则返回。
如果将 将字符串转换为数字的算法 应用于由元素的 value 给出的字符串不会导致错误,则令 value 为该算法的结果。否则,令 value 为零。
令 valueBeforeStepping 为 value。
如果从 步长基数 中减去 value 不是 允许的值步长 的整数倍,则将 value 设置为最接近的值,该值在从 步长基数 中减去时,是 允许的值步长 的整数倍,并且如果调用的方法是 stepDown()
方法,则小于 value,否则大于 value。
否则(从 步长基数 中减去 value 是 允许的值步长 的整数倍)
令 n 为参数。
令 delta 为 允许的值步长 乘以 n。
如果调用的方法是 stepDown()
方法,则对 delta 取反。
令 value 为将 delta 加到 value 的结果。
如果元素有 最小值,并且 value 小于该 最小值,则将 value 设置为最小的值,该值在从 步长基数 中减去时,是 允许的值步长 的整数倍,并且大于或等于 minimum。
如果元素有 最大值,并且 value 大于该 最大值,则将 value 设置为最大的值,该值在从 步长基数 中减去时,是 允许的值步长 的整数倍,并且小于或等于 maximum。
如果调用的方法是 stepDown()
方法且 value 大于 valueBeforeStepping,或者调用的方法是 stepUp()
方法且 value 小于 valueBeforeStepping,则返回。
令 value as string 为对 value 运行针对 input
元素的 type
属性当前状态定义的 将数字转换为字符串的算法 的结果。
将元素的 value 设置为 value as string。
list
IDL 属性必须返回当前 建议来源元素(如果有),否则返回 null。
所有当前引擎都支持。
HTMLInputElement
showPicker()
和 HTMLSelectElement
showPicker()
方法的步骤是
如果 this 不是 可变的,则抛出一个 "InvalidStateError
" DOMException
。
如果 this 的 相关设置对象 的 来源 与 this 的 相关设置对象 的 顶级来源 不是 同源,并且 this 是一个 select
元素,或者 this 的 type
属性不在 文件上传 状态或 颜色 状态,则抛出一个 "SecurityError
" DOMException
。
如果 this 的 相关全局对象 没有 瞬时激活,则抛出一个 "NotAllowedError
" DOMException
。
如果 this 是一个 select
元素,并且 this 没有 正在渲染,则抛出一个 "NotSupportedError
" DOMException
。
显示拾取器(如果适用),用于 this。
对于 input
或 select
元素 element,显示拾取器(如果适用) 的操作如下
如果 element 不是 可变的,则返回。
如果 element 是一个 input
元素,并且 element 的 type
属性处于 文件上传 状态,则 并行 运行以下步骤。
可选地,等待任何先前执行的此算法完成。
向用户显示一个提示,要求用户指定一些文件。如果 multiple
属性未在 element 上设置,则最多可以选择一个文件;否则,可以选择任意数量的文件。文件可以来自文件系统,也可以动态创建,例如,从连接到用户设备的相机拍摄的照片。
等待用户完成选择。
如果用户在未更改选择的情况下取消了提示,则 在用户交互任务源上排队一个元素任务,该任务源是 用户交互任务源,给出 element 以 触发一个名为 cancel
的事件,在 element 上触发, bubbles
属性初始化为 true。
否则,更新 element 的文件选择。
与所有用户界面规范一样,用户代理在如何解释这些要求方面拥有很大的自由度。上面的文字暗示用户要么取消提示,要么更改选择;这两者中只有一个为真。但是,将这些可能性映射到特定的用户界面元素不受标准的强制。例如,用户代理可能会将点击“取消”按钮(在之前选择了文件的情况下)解释为更改选择以选择零个文件,从而触发 input
和 change
。或者它可能会将此类点击解释为取消,这将保持选择不变,从而触发 cancel
。同样,是否重新选择与之前选择相同的文件(即使与之前选择相同)是取消,还是更改选择,也取决于用户代理。
否则,用户代理应该显示任何与为 element 选择值相关的用户界面,就像用户通常与控件交互时一样。(如果 element 不适用此类 UI,则此步骤不执行任何操作。)
如果显示了此类用户界面,它必须遵守规范相关部分中针对 element 的行为(根据其 type
属性状态)而提出的要求。(例如,各个部分描述了对结果 value 字符串的限制。)
此步骤可能会产生副作用,例如关闭此算法先前显示的其他选择器。(如果这关闭了文件选择选择器,则根据上面的说法,这将导致触发 input
和 change
事件,或者是一个 cancel
事件。)
当 input
和 change
事件 apply 时(这适用于所有 input
控件,除了 按钮 和 type
属性处于 状态的控件),这些事件被触发以表明用户已与控件交互。当用户修改控件的数据时,会触发 input
事件。当值被提交时,会触发 change
事件(如果对控件有意义),否则,当控件 失去焦点 时会触发。在所有情况下,input
事件在相应的 change
事件(如果有)之前触发。
当 input
元素具有定义的 输入激活行为 时,如果这些事件 apply,则分派这些事件的规则在上面定义了 type
属性状态的部分中给出。(这适用于所有 input
控件,其 type
属性处于 复选框 状态、单选按钮 状态或 文件上传 状态。)
对于 input
元素,它没有定义的 输入激活行为,但这些事件 apply,并且用户界面既包含交互式操作,也包含明确的提交操作,那么当用户更改元素的 value 时,用户代理必须 在用户交互任务源上排队一个元素任务,该任务源是 用户交互任务源,给出 input
元素以 触发一个名为 input
的事件,在 input
元素上触发, bubbles
和 composed
属性初始化为 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。
这些事件不会响应脚本对表单控件值所做的更改而触发。(这样做是为了更容易更新表单控件的值,以响应用户对控件的操作,而无需过滤脚本自身的更改以避免无限循环。)
当浏览器在 导航期间恢复状态 的过程中更改表单控件的值时,也不会触发这些事件。