如何更改或删除HTML5表单验证默认错误消息?

emi*_*lan 137 validation html5

比如我有一个textfield.该字段是必填字段,仅需要数字且值的长度必须为10.当我尝试提交长度为5的值的表单时,将显示默认错误消息:Please match the requested format

<input type="text" required="" pattern="[0-9]{10}" value="">
Run Code Online (Sandbox Code Playgroud)
  1. 如何更改HTML 5表单验证错误的默认消息?
  2. 如果第一点可以完成,那么有没有办法创建一些属性文件并在该文件中设置自定义错误消息?

Mah*_*r13 208

我在Ankur的答案中发现了一个错误,我已经修正了这个错误:

 <input type="text" pattern="[a-zA-Z]+"
    oninvalid="setCustomValidity('Plz enter on Alphabets ')"
    onchange="try{setCustomValidity('')}catch(e){}" />
Run Code Online (Sandbox Code Playgroud)

设置无效输入数据时看到的错误,然后更正输入并发送表单.哎呀!你不能这样做.我在firefox和chrome上测试过它

  • 我建议不要使用内联事件.这不是一个好习惯. (17认同)
  • 最好使用"onkeyup"而不是"onchange"来有效地查看输入是否有效. (4认同)
  • 这有以下问题(至少在Chrome 55中):当弹出无效消息时,如果用户将焦点保持在无效字段中(不点击)并编辑该字段,则消息会一直弹出 - 即使字段有效 - 它是必须集中注意力或触发提交. (4认同)
  • @ Mahoor13我写的与此类似,但它从未验证过.你能给我一个暗示吗?http://jsfiddle.net/2USxy/ (2认同)

小智 92

当使用pattern =时,它将显示你在标题attrib中放置的内容,因此不需要JS只做:

<input type="text" required="" pattern="[0-9]{10}" value="" title="This is an error message" />
Run Code Online (Sandbox Code Playgroud)

  • 非常好的答案.但与HTML5一样,可靠性取决于浏览器.这个解决方案适用于FF 15和Chrome 22,但不适用于Safari 5.(使用OS X Lion测试) (9认同)
  • 标题也用作鼠标悬停的工具提示文本,所以我会远离这种方法. (7认同)
  • 当我将标题设置为"foo"时,我会收到"请匹配请求的格式.foo",所以这对我不起作用 (6认同)
  • 标题也用作鼠标悬停的工具提示文本,因此这可能是最好的方法. (2认同)
  • 我认为使用 `title` 属性的想法是描述“输入 10 位数字”之类的要求。而不是像“这不是一个有效数字”这样的错误。在描述需求时,在鼠标悬停和验证错误消息中出现相同的文本是没有问题的。(我并不是说我的措辞是最好的,我知道可能会争论是否说“输入...”与“值必须是...”等) (2认同)

Ank*_*iya 34

<input type="text" pattern="[a-zA-Z]+"
oninvalid="setCustomValidity('Plz enter on Alphabets ')" />
Run Code Online (Sandbox Code Playgroud)

我在另一篇文章中找到了这段代码.


Rik*_*tel 15

HTML:

<input type="text" pattern="[0-9]{10}" oninvalid="InvalidMsg(this);" name="email" oninput="InvalidMsg(this);"  />
Run Code Online (Sandbox Code Playgroud)

JAVASCRIPT:

function InvalidMsg(textbox) {

     if(textbox.validity.patternMismatch){
        textbox.setCustomValidity('please enter 10 numeric value.');
    }    
    else {
        textbox.setCustomValidity('');
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

Fiddle Demo


Luc*_*oli 14

使用jQuery防止浏览器验证消息出现在您的文档中:

$('input, select, textarea').on("invalid", function(e) {
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)


小智 13

您可以通过执行以下操作来删除此警报:

<input type="text" pattern="[a-zA-Z]+"
    oninvalid="setCustomValidity(' ')"
/>
Run Code Online (Sandbox Code Playgroud)

只需将自定义消息设置为一个空格


alb*_*ert 11

你可以通过约束验证来改变它们:http://www.w3.org/TR/html5/constraints.html#dom-cva-setcustomvalidity

如果你想要一个简单的解决方案,你可以摇滚civem.js,自定义输入验证错误消息JavaScript lib下载:https://github.com/javanto/civem.js 现场演示:http://jsfiddle.net/ hleinone/njSbH /


kta*_*kta 5

使用setCustomValidity可以更改默认验证消息。以下是有关如何使用它的简单示例。

var age  =  document.getElementById('age');
    age.form.onsubmit = function () {
    age.setCustomValidity("This is not a valid age.");
 };
Run Code Online (Sandbox Code Playgroud)


小智 5

我现在偶然找到了一种方法:你可以使用这个:数据错误:“”

<input type="username" class="form-control" name="username" value=""
placeholder="the least 4 character"
data-minlength="4" data-minlength-error="the least 4 character"
data-error="This is a custom Errot Text fot patern and fill blank"
max-length="15" pattern="[A-Za-z0-9]{4,}"
title="4~15 character" required/>
Run Code Online (Sandbox Code Playgroud)