例如,我有一个 textfield
。该字段为必填项,仅需要数字,值的长度必须为 10。当我尝试提交长度为 5 的表单时,出现默认错误消息:Please match the requested format
<input type="text" required="" pattern="[0-9]{10}" value="">
如何更改 HTML 5 表单验证错误默认消息?如果可以做到第一点,那么有没有办法创建一些属性文件并在该文件中设置自定义错误消息?
这是 JavaScript 解决方案:
<input type="text"
pattern="[a-zA-Z]+"
oninvalid="setCustomValidity('Please enter Alphabets.')"
onchange="try{setCustomValidity('')}catch(e){}" />
设置无效输入数据时需要“onchange”事件,然后更正输入并再次发送表单。我已经在 Firefox、Chrome 和 Safari 上对其进行了测试。
但对于现代浏览器:
现代浏览器不需要任何 JavaScript 进行验证。这样做:
<input type="text"
pattern="[a-zA-Z]+"
title="Please enter Alphabets."
required="" />
使用 pattern= 时,它将显示您在标题属性中输入的任何内容,因此不需要 JS 只需执行以下操作:
<input type="text" required="" pattern="[0-9]{10}" value="" title="This is an error message" />
title
属性的想法是描述“输入 10 位数字”之类的要求。而不是像“这不是一个有效的数字”这样的错误。在描述需求时,鼠标悬停和验证错误消息中出现相同的文本没有问题。 (我并不是说我的措辞是最好的,我知道是否说“Enter...”与“Value must be...”等可能存在争议。)
<input type="text" pattern="[a-zA-Z]+"
oninvalid="setCustomValidity('Plz enter on Alphabets ')" />
我在另一篇文章中找到了这段代码。
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;
}
要防止浏览器验证消息出现在您的文档中,请使用 jQuery:
$('input, select, textarea').on("invalid", function(e) {
e.preventDefault();
});
您可以通过执行以下操作删除此警报:
<input type="text" pattern="[a-zA-Z]+"
oninvalid="setCustomValidity(' ')"
/>
只需将自定义消息设置为一个空格
您可以通过约束验证 api 更改它们:http://www.w3.org/TR/html5/constraints.html#dom-cva-setcustomvalidity
如果您想要一个简单的解决方案,您可以使用 civem.js,自定义输入验证错误消息 JavaScript 库在这里下载:https://github.com/javanto/civem.js 现场演示:http://jsfiddle.net/hleinone/njSbH/
setCustomValidity 让您可以更改默认验证消息。这是一个简单的使用示例。
var age = document.getElementById('age');
age.form.onsubmit = function () {
age.setCustomValidity("This is not a valid age.");
};
我现在意外找到了一种方法:您可以使用这个: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/>
我在 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("");
}
}
它将完美地循环运行。
要为 HTML 5 验证设置自定义错误消息,
oninvalid="this.setCustomValidity('Your custom message goes here.')"
并在用户输入有效数据使用时删除此消息,
onkeyup="setCustomValidity('')"
希望这对你有用。享受 ;)
正如你在这里看到的:
html5 oninvalid doesn't work after fixed the input field
这样对你有好处,因为当你修复错误时会消失警告消息。
<input type="text" pattern="[a-zA-Z]+"
oninvalid="this.setCustomValidity(this.willValidate?'':'your custom message')" />
这在 Chrome 中对我有用
简单地说,你可以对