我有以下HTML5形式:http://jsfiddle.net/nfgfP/

<form id=“onsubmit”=“return(登录)“> <输入=“用户名” <输入=“pass”类型=“密码” <br/> reminme: <输入类型=“checkbox” <输入类型=“submit”

目前,当我点击enter时,它们都是空白的,弹出框显示“请填写此字段”。如何将默认消息更改为“此字段不能留空”?

编辑:还要注意,类型密码字段的错误消息仅仅是*****。为了重新创建这个,给用户名一个值并点击submit。

编辑:我使用Chrome 10进行测试。请也这样做


当前回答

在HTML5 oninvalid事件的帮助下控制自定义消息非常简单

代码如下:

User ID 
<input id="UserID"  type="text" required 
       oninvalid="this.setCustomValidity('User ID is a must')">

其他回答

下面是在HTML5中处理自定义错误消息的代码:

<input type="text" id="username" required placeholder="Enter Name" oninvalid = "。setCustomValidity('在这里输入用户名')" oninput = " this.setCustomValidity (")" / >

这部分很重要,因为它隐藏了用户输入新数据时的错误消息:

oninput="this.setCustomValidity('')"

可以通过在字段中添加'title'来轻松处理:

<input type="text" id="username" required title="This field can not be empty"  />

使用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处理程序来清除它。

解决方案防止谷歌Chrome错误消息输入每个符号:

<p>Click the 'Submit' button with empty input field and you will see the custom error message. Then put "-" sign in the same input field.</p> <form method="post" action="#"> <label for="text_number_1">Here you will see browser's error validation message on input:</label><br> <input id="test_number_1" type="number" min="0" required="true" oninput="this.setCustomValidity('')" oninvalid="this.setCustomValidity('This is my custom message.')"/> <input type="submit"/> </form> <form method="post" action="#"> <p></p> <label for="text_number_1">Here you will see no error messages on input:</label><br> <input id="test_number_2" type="number" min="0" required="true" oninput="(function(e){e.setCustomValidity(''); return !e.validity.valid && e.setCustomValidity(' ')})(this)" oninvalid="this.setCustomValidity('This is my custom message.')"/> <input type="submit"/> </form>

好吧,oninvalid工作得很好,但它显示错误,即使用户输入有效的数据。所以我用下面的方法来解决这个问题,希望它对你也有用,

oninvalid=“this.setCustomValidity('Your Custom message.')” onkeyup=“setCustomValidity('')”