如何解决HTML5 表单必需属性设置自定义验证消息?
document.addEventListener("DOMContentLoaded", function() {
var elements = document.getElementsByTagName("INPUT");
for (var i = 0; i < elements.length; i++) {
elements[i].oninvalid = function(e) {
e.target.setCustomValidity("");
if (!e.target.validity.valid) {
e.target.setCustomValidity("This field cannot be left blank");
}
};
elements[i].oninput = function(e) {
e.target.setCustomValidity("");
};
}
})
根据@itpastorn在评论中的建议,我从 Mootools更改为 vanilla JavaScript,但如果需要,您应该能够计算出等效的 Mootools。
编辑
我在这里更新了代码,因为setCustomValidity
与我最初回答时的理解略有不同。如果setCustomValidity
设置为空字符串以外的任何内容,则会导致该字段被视为无效;所以你必须在测试有效性之前清除它,你不能只是设置它而忘记。
进一步编辑
正如下面@thomasvdb
的评论中所指出的,您需要在某些事件之外清除自定义有效性,invalid
否则可能需要额外通过oninvalid
处理程序来清除它。
解决方法
我有以下 HTML5 表单:http: //jsfiddle.net/nfgfP/
<form id="form" onsubmit="return(login())">
<input name="username" placeholder="Username" required />
<input name="pass" type="password" placeholder="Password" required/>
<br/>Remember me: <input type="checkbox" name="remember" value="true" /><br/>
<input type="submit" name="submit" value="Log In"/>
目前,当我在它们都为空白时按 Enter 键时,会出现一个弹出框,上面写着“请填写此字段”。如何将该默认消息更改为“此字段不能留空”?
编辑: 另请注意,类型密码字段的错误消息只是*****
. 要重新创建它,请给用户名一个值并点击提交。
编辑 :我正在使用 Chrome 10 进行测试。请做同样的事情
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。