我想使用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;
}
是否可以通过这种方式验证电子邮件地址?
答案 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,则某些尚未捕获的内容可能会失败起来。