输入类型电子邮件的CustomValidity

时间:2013-12-13 12:00:19

标签: validation email

我设法为输入和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("");
    };
}       

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

在发布的代码中,您使用了getElementById,它只返回一个具有指定ID的元素。

如果用var elements = document.querySelectorAll("input[type=email]");替换它,一切都会正常。

示例

http://jsfiddle.net/X8zHP/

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