ElementInternals:setValidity() 方法

Baseline 已广泛支持

此功能已成熟,并可在许多设备和浏览器版本上运行。自 2023 年 3 月以来,它已在各种浏览器中可用。

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

语法

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,但该 anchor 不是元素的 shadow-inclusive descendant,则抛出此异常。

示例

在以下示例中,调用 setValidity 时传入了空的 flags 参数,表示元素符合约束验证规则。

js
this.internals_.setValidity({});

在以下示例中,调用 setValidity 时将 valueMissing 标志设置为 true。此时必须同时传入一个包含消息的 message 参数。

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

规范

规范
HTML
# dom-elementinternals-setvalidity

浏览器兼容性