我有以下HTML5形式:http://jsfiddle.net/nfgfP/
<form id=“onsubmit”=“return(登录)“>
<输入=“用户名”
<输入=“pass”类型=“密码”
<br/> reminme: <输入类型=“checkbox”
<输入类型=“submit”
目前,当我点击enter时,它们都是空白的,弹出框显示“请填写此字段”。如何将默认消息更改为“此字段不能留空”?
编辑:还要注意,类型密码字段的错误消息仅仅是*****。为了重新创建这个,给用户名一个值并点击submit。
编辑:我使用Chrome 10进行测试。请也这样做
使用setCustomValidity:
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换成了普通的JavaScript,但如果有必要,你应该能够找到Mootools的等效版本。
Edit
我在这里更新了代码,因为setCustomValidity的工作方式与我最初回答时的理解略有不同。如果setCustomValidity被设置为空字符串以外的任何值,将导致该字段被认为无效;因此,您必须在测试有效性之前清除它,您不能只是设置它然后忘记。
进一步的编辑
正如下面@thomasvdb的评论中指出的那样,你需要在无效之外的一些事件中清除自定义有效性,否则可能会通过oninvalid处理程序来清除它。