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


142

例如我有一个textfield。该字段是必填字段,仅数字是必需的,并且值的长度必须为10。当我尝试提交长度为5的值的表单时,会出现默认错误消息:Please match the requested format

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

1
我在Mahoor13答案上发现了一个错误,该错误未在循环中起作用,因此我已对其进行了修复并作了一些更正,可以在答案部分下找到答案。 这里是链接 stackoverflow.com/questions/10361460/...
达山Gorasia

Answers:


213

我在Ankur答案上发现了一个错误,并通过以下更正对其进行了修复:

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

设置无效的输入数据,然后更正输入并发送表格时看到的错误。哎呀!你做不到 我已经在Firefox和Chrome上测试过


18
我建议不要使用内联事件。这不是一个好习惯。
杰瑞德(Jared)

2
@ Mahoor13我已经写了类似的东西,但从未验证过。你能给我个提示吗?jsfiddle.net/2USxy
SLIQ

1
您还可以添加一个自定义的Firefox属性,该属性可以很好地运行:x-moz-errormessage =“请仅输入数字”
coliff 2013年

4
最好使用“ onkeyup”而不是“ onchange”来有效查看输入是否有效。
Jam Ville 2014年

4
这具有以下问题(至少在Chrome 55中如此):弹出无效消息时,如果用户将焦点一直放在无效字段中(未单击)并编辑该字段,则该消息仍会弹出(即使该字段有效)-聚焦或触发提交是必要的。
leonbloy

96

当使用pattern =时,它将显示您放在标题attrib中的内容,因此不需要JS就可以了:

<input type="text" required="" pattern="[0-9]{10}" value="" title="This is an error message" />

9
很好的答案。但是与所有HTML5一样,可靠性取决于浏览器。此解决方案适用于FF 15和Chrome 22,但不适用于
Safari5

1
不错的答案,但请注意此处的向后(或当前)兼容性。
波尼2012年

7
当我将标题设置为“ foo”时,我得到“请匹配请求的格式。foo”,因此这对我不起作用
Daan

7
标题也用作鼠标悬停时的工具提示文本,因此我将不采用这种方法。
fotijr 2015年

2
标题也用作鼠标悬停时的工具提示文本,因此这可能是最好的方法。
OdraEncoded'Aug


15

HTML:

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

JAVASCRIPT:

function InvalidMsg(textbox) {

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

Fiddle Demo



13

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

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

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



5

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

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

3

我现在偶然发现了一种方法:您可以使用此方法:data-error:“”

<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/>

3

我在Mahoor13答案上发现了一个错误,该错误无法循环播放,因此我通过以下更正对其进行了修复:

HTML:

<input type="email" id="eid" name="email_field" oninput="check(this)">

Javascript:

function check(input) {  
    if(input.validity.typeMismatch){  
        input.setCustomValidity("Dude '" + input.value + "' is not a valid email. Enter something nice!!");  
    }  
    else {  
        input.setCustomValidity("");  
    }                 
}  

它将完美地循环运行。




2

要为HTML 5验证设置自定义错误消息,

oninvalid="this.setCustomValidity('Your custom message goes here.')"

并在用户输入有效数据使用权时删除此消息,

onkeyup="setCustomValidity('')"

希望这对您有用。请享用 ;)


0

这是我在Chrome浏览器中的工作

    <input type="text" name="product_title" class="form-control" 
required placeholder="Product Name" value="" pattern="([A-z0-9À-ž\s]){2,}"
oninvalid="setCustomValidity('Please enter on Producut Name at least 2 characters long')"

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.