You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何获取通过setCustomValidity设置的HTML5自定义验证错误消息?

获取HTML5 Constraints API的自定义错误消息

这个问题我之前也碰到过,其实答案很简单——你要找的自定义错误消息并不在ValidityState对象里,而是存在输入元素自身的validationMessage属性中!

为什么ValidityState里找不到消息?

ValidityState本质是一个错误状态标识集合,它里面的所有字段(比如customErrorvalueMissingtypeMismatch等)都是布尔值,作用是告诉你当前输入元素触发了哪一类验证错误,并不负责存储具体的错误文本内容。当你看到customErrortrue时,只是在提示你:当前的验证错误是通过自定义规则触发的,具体消息要去元素本身的属性里找。

正确获取自定义错误消息的方法

直接访问输入元素的validationMessage属性即可,不管是系统默认的验证消息,还是你通过setCustomValidity()设置的自定义消息,都会存在这里。

举个完整的示例:

// 获取目标输入元素
const inputElement = document.getElementById('your-input-id');

// 设置自定义验证错误消息
inputElement.setCustomValidity('这是我自定义的错误提示内容');

// 验证元素状态(此时ValidityState.customError会是true)
console.log(inputElement.validity.customError); // 输出: true

// 获取自定义错误消息
console.log(inputElement.validationMessage); // 输出: "这是我自定义的错误提示内容"

额外注意事项

当你需要清除自定义错误,让元素恢复验证有效性时,一定要调用setCustomValidity('')(传入空字符串),否则customError会一直保持true,元素会持续处于验证无效状态:

// 清除自定义错误
inputElement.setCustomValidity('');
console.log(inputElement.validity.customError); // 输出: false
console.log(inputElement.validationMessage); // 输出: ""

内容的提问来源于stack exchange,提问作者Łukasz W.

火山引擎 最新活动