使用“隐藏表格”验证电子邮件?

时间:2016-03-31 21:16:32

标签: javascript validation email

我想使用HTML5的type="email"验证来创建验证电子邮件的功能。

如果可能,我想做的是创建一个表单,并附加type="email"的输入,以便我可以尝试提交它。然后,我可以看看是否有效,无论通过的电子邮件是否实际上都是电子邮件。

像这样,但我知道这不起作用:

function isEmail (string) {
    var frm   = document.createElement('form');
    var input = document.createElement('input');

    input.setAttribute('type', 'email');
    input.setAttribute('action', 'javascript:void(0)');
    input.setAttribute('value', string);

    frm.appendChild(input);

    // I know this doesn't work
    if ( !! frm.submit() ) return true;
    else return false;
}

是否可以通过这种方式验证电子邮件地址?

1 个答案:

答案 0 :(得分:1)

正如https://www.w3.org/TR/html5/forms.html#e-mail-state-(type=email)所说,

  

用户代理可能允许用户将值设置为不是有效电子邮件地址的字符串

所以我可能宁愿不依赖它。

另外,https://www.w3.org/TR/html5/forms.html#valid-e-mail-address有一个(JS兼容的)正则表达式执行相同的检查,因为浏览器应该在验证电子邮件输入字段时 - 所以我可能只是使用它。 / p>

但是,如果您坚持使用表单字段 - HTML5还提供了一个API来检查表单字段是否有效,请参阅https://www.w3.org/TR/html5/forms.html#the-constraint-validation-api - 因此无需实际提交表单。

我没有检查输入类型=电子邮件的浏览器兼容性 - 但是使用正则表达式解决方案,您将拥有适用于每个浏览器的内容,而如果您依赖HTML5,则某些尚未捕获的内容可能会失败起来。