解雇html5电子邮件验证器,因为除了提交表单之外,它还失去了关注点

解雇html5电子邮件验证器,因为除了提交表单之外,它还失去了关注点,html,html-email,email-validation,Html,Html Email,Email Validation,我有一个电子邮件输入字段,在该字段中,我使用ajax检查电子邮件是否已经存在于我的数据库中,以避免因电子邮件输入而失去焦点。在进行ajax调用之前,我希望确保输入的电子邮件格式正确。我可以用html5内置的电子邮件验证器来实现这一点,还是必须编写自己的验证功能 编辑:我已经在使用html5电子邮件验证程序,但它仅在提交表单时验证电子邮件。在Firefox中,它应在默认情况下键入时检查电子邮件的有效性(本机html5行为): 但要支持所有HTML5浏览器,您需要手动调用checkValidity

我有一个电子邮件输入字段,在该字段中,我使用ajax检查电子邮件是否已经存在于我的数据库中,以避免因电子邮件输入而失去焦点。在进行ajax调用之前,我希望确保输入的电子邮件格式正确。我可以用html5内置的电子邮件验证器来实现这一点,还是必须编写自己的验证功能


编辑:我已经在使用html5电子邮件验证程序,但它仅在提交表单时验证电子邮件。

在Firefox中,它应在默认情况下键入时检查电子邮件的有效性(本机html5行为):

但要支持所有HTML5浏览器,您需要手动调用
checkValidity()
onblur
和/或
onkeydown

有关详细信息,请参阅此链接:


正如您在下面的评论中所说,在进行ajax调用之前,您必须在onblur函数的if子句中使用函数this.checkValidity(),并自己显示任何错误,因为在除Firefox以外的浏览器中,除非提交表单,否则不会触发本机验证消息UI。

它应该在每次按键时自动验证…您使用的是
@MattBrowne
checkEmailAvailability()
是ajax功能,我知道它不会在您键入时验证电子邮件,因为我使用电子邮件输入类型登录时不使用
onblur
或任何其他功能,而且只有在表单提交时验证程序才会生效。它必须是您的代码中的其他内容(或者可能是您的浏览器)因为JSFIDLE正如我所描述的那样工作。我已经在Chrome 26.0.1410.64版和Internet Explorer 10.0.9200.16540版上测试了它。它仅在单击提交按钮时显示无效的电子邮件;我记得其他浏览器在这方面的表现与Firefox相同,但我错了。这应该有助于澄清问题:这是有帮助的。在进行ajax调用之前,我只需要在onblur函数的if子句中使用函数
checkValidity(this)