我设法为输入和textarea标签设置自定义有效性功能,因为我正在使用德语浏览器,但希望用英语显示警告。
现在 - 如果我将输入类型设置为“email”,它会显示上述自定义警告, 但我只想为“电子邮件”类型提供一个不同的...
到目前为止,这是我的代码:
var elements = document.getElementsById("email");
for (var i = 0; i < elements.length; i++) {
elements[i].oninvalid = function(e) {
e.target.setCustomValidity("");
if (!e.target.validity.valid) {
e.target.setCustomValidity("You've entered an invalid email adress");
}
};
elements[i].oninput = function(e) {
e.target.setCustomValidity("");
};
}
有没有办法做到这一点?
答案 0 :(得分:0)
在发布的代码中,您使用了getElementById
,它只返回一个具有指定ID的元素。
如果用var elements = document.querySelectorAll("input[type=email]");
替换它,一切都会正常。
示例强>
<强> JS 强>
var elements = document.querySelectorAll("input[type=email]");
for (var i = 0; i < elements.length; i++) {
elements[i].oninvalid = function(e) {
e.target.setCustomValidity("");
if (!e.target.validity.valid) {
e.target.setCustomValidity("You've entered an invalid email adress");
}
};
elements[i].oninput = function(e) {
e.target.setCustomValidity("");
};
}
<强> HTML 强>
<form action="#" autocomplete="on">
First name:<input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
E-mail: <input type="email" name="email" id="email" autocomplete="off"><br>
<input type="submit">
</form>