ElementInternals:setValidity() 方法

基线 2023

新可用

2023 年 3 月起,此功能可在最新的设备和浏览器版本中使用。此功能可能在较旧的设备或浏览器中无法使用。

setValidity() 方法是 ElementInternals 接口的方法,用于设置元素的有效性。

语法

js
setValidity(flags)
setValidity(flags, message)
setValidity(flags, message, anchor)

参数

flags 可选

一个字典对象,包含一个或多个标志,指示元素的有效性状态

valueMissing

一个布尔值,如果元素具有 required 属性但没有值,则为 true,否则为 false。如果为 true,则元素与 :invalid CSS 伪类匹配。

typeMismatch

一个布尔值,如果值不符合所需的语法(当 typeemailurl 时),则为 true,如果语法正确,则为 false。如果为 true,则元素与 :invalid CSS 伪类匹配。

patternMismatch

一个布尔值,如果值与指定的 pattern 不匹配,则为 true,如果匹配,则为 false。如果为 true,则元素与 :invalid CSS 伪类匹配。

tooLong

一个布尔值,如果值超过了 HTMLInputElementHTMLTextAreaElement 对象指定的 maxlength,则为 true,如果其长度小于或等于最大长度,则为 false。如果为 true,则元素与 :invalid:out-of-range CSS 伪类匹配。

tooShort

一个布尔值,如果值未满足 HTMLInputElementHTMLTextAreaElement 对象指定的 minlength,则为 true,如果其长度大于或等于最小长度,则为 false。如果为 true,则元素与 :invalid:out-of-range CSS 伪类匹配。

rangeUnderflow

一个布尔值,如果值小于 min 属性指定的最小值,则为 true,如果大于或等于最小值,则为 false。如果为 true,则元素与 :invalid:out-of-range CSS 伪类匹配。

rangeOverflow

一个布尔值,如果值大于 max 属性指定的最大值,则为 true,如果小于或等于最大值,则为 false。如果为 true,则元素与 :invalid:out-of-range CSS 伪类匹配。

stepMismatch

一个布尔值,如果值不符合由 step 属性确定的规则(即,不能被步长值整除),则为 true,如果符合步长规则,则为 false。如果为 true,则元素与 :invalid:out-of-range CSS 伪类匹配。

badInput

一个布尔值,如果用户提供的输入浏览器无法转换,则为 true

customError

一个布尔值,指示元素的自定义有效性消息是否已通过调用元素的 setCustomValidity() 方法设置为非空字符串。

注意:要将所有标志设置为 false(表示此元素通过所有约束验证),请传入一个空对象 {}。在这种情况下,您不需要也传递 message

message 可选

一个包含消息的字符串,如果任何 flagstrue,则将设置此字符串。仅当所有 flags 均为 false 时,此参数才是可选的。

anchor 可选

一个 HTMLElement,用户代理可以使用它来报告此表单提交的问题。

返回值

无 (undefined).

异常

NotSupportedError DOMException

如果元素的 formAssociated 属性未设置为 true,则抛出此异常。

TypeError

如果一个或多个 flagstrue,则抛出此异常。

NotFoundError DOMException

如果提供了 anchor,但该锚点不是元素的包含阴影的后代,则抛出此异常。

示例

在以下示例中,setValidity 被调用,其 flags 参数为空,表示元素满足约束验证规则。

js
this.internals_.setValidity({});

在以下示例中,setValidity 被调用,其 valueMissing 标志被设置为 true。然后还必须传递一个 message 参数,其中包含一条消息。

js
this.internals_.setValidity({ valueMissing: true }, "my message");

规范

规范
HTML 标准
# dom-elementinternals-setvalidity

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。