2013-10-18 80 views
0

这是一个非常具体的问题,这个jQuery总是记录到控制台,尽管电子邮件格式是真实地址,但它仍然无效。似乎无法弄清楚为什么。正则表达式正确吗?任何帮助非常感激jQuery不验证电子邮件格式

// VALIDATION ON BLUR 
    $("#prospects_form > *").blur(function() { 

     // Validate Email 
     function valEmail() { 
      var email = $("#form_email"), 
       // Check address format 
       emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 

      if (!emailFilter.test(email.value)) { 
       // Incorrect 
       $("#form_email").addClass("invalid"); 
       console.log('email invalid'); 
      } else { 
       // Correct 
       $("#form_email").removeClass("invalid"); 
       console.log('email valid'); 
      } 
     } 
     valEmail(); 

    }); 
+5

视为'VAR email'是一个jQuery对象,你应该尝试'email.val( )'来获得它的价值。 – Moob

+0

记录或警告'email.value'并检查它是否符合预期。 – Moob

+1

仅供参考正则表达式看起来有效:http://regex101.com/r/sH7wB0 – Moob

回答

1

按照我的意见:

视为变种的电子邮件是一个jQuery对象,你应该尝试email.val()来获取 它的价值。

我使this Fiddle显示它工作如果您使用email.val()

if (!emailFilter.test(email.val())) {... 
1

jquery Dom对象没有属性value。使用

$("#form_email").val(); 

代替

$("#form_email").value; 

希望这有助于....