ValidityState: rangeOverflow 属性

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

ValidityState 接口的只读属性 rangeOverflow 指示一个 <input> 元素的值(在用户编辑后)是否不符合该元素 max 属性设定的约束。

如果字段具有数值性质,包括 datemonthweektimedatetime-localnumberrange 类型,并且设置了 max 值,如果值不符合 max 值设定的约束,则 rangeOverflow 属性将为 true。

如果 ValidityState 不符合约束,则为 true 的布尔值。

示例

数值溢出的输入

以下示例检查一个 数值输入元素 的有效性。通过 max 属性 添加了一个约束,该约束将输入的上限值设置为 18。如果用户输入的数字大于 18,该元素将无法通过约束验证,并且与 :invalid:out-of-range CSS 伪类匹配的样式将被应用。

css
/* or :invalid */
input:out-of-range {
  outline: red solid 3px;
}
html
<pre id="log">Validation logged here...</pre>
<input type="number" id="age" max="18" />
js
const userInput = document.getElementById("age");
const logElement = document.getElementById("log");

function log(text) {
  logElement.innerText = text;
}

userInput.addEventListener("input", () => {
  userInput.reportValidity();
  if (userInput.validity.rangeOverflow) {
    log("Number is too high!");
  } else {
    log("Input is valid…");
  }
});

规范

规范
HTML
# dom-validitystate-rangeoverflow

浏览器兼容性

另见