验证电子邮件地址失败

问题描述:

我有一个关于jQuery和电子邮件验证的小问题。我正在使用电子邮件输入框来检索用户输入的电子邮件地址(html5),但它不适用于IE,我现在想在提交表单之前添加一个简单的jquery函数来验证输入的电子邮件地址。 这是我所做的。验证电子邮件地址失败

function IsValidEmail(email) 
{ 
    var eReg=/^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    return eReg.test(email); 
} 
$(document).ready(function() 
    { 
    var em=$('#email').val(); 
    if(!IsValidEmail(em)) 
    { 
     $('#e-valid').css('color','red'); 
      $('#e-valid').html("Email is invalid.Please enter a valid address"); 
    } 
    } 
); 

,这里是形式

<form method="POST" action="doit" id="stuff"> 
     <table> 
     <tr> 
      <td width="175px"><label for="email">Your email address</label></td>     
      <td><input type="email" name="email" id="email" size="35"/><span id="e-valid">&nbsp;</span></td> 
     </tr> 
     <tr> 
      <td></td><td><input type="submit" value="Send" /></td> 
     </tr> 
     </table> 
    </form> 

然而,当我在输入框中输入了无效的电子邮件地址已经被上什么都没有。我很感激任何帮助。谢谢。

+0

如果我理解正确,当html表单加载并准备就绪时,代码就会运行。在html页面准备好之后,现在你改变了字段,你需要再次触发检查,根据你上面粘贴的内容,我找不到它。 – Jasonw 2012-04-04 02:20:15

您正在验证页面加载时的电子邮件,但不是在用户提交信息时验证。你应该把你的验证上submit事件

$("#aspnetForm").submit(function(){ 
    var em=$('#email').val(); 
    if(!IsValidEmail(em)) 
    { 
     $('#e-valid').css('color','red'); 
     $('#e-valid').html("Email is invalid.Please enter a valid address"); 
     return false; 
    } 
    return true; 
} 

首先,你使用正则表达式看起来很奇怪。 大多数使用反斜杠的占位符在字符集内失去意义。

请参阅有关正则表达式用于验证的电子邮件地址的目的,信息thisthis

修复了正则表达式之后,您应该遵循Claudio的建议并将验证放在表单提交中。