2011-05-02 69 views
2

我遇到了一个表单,我试图验证。我试图确保电子邮件输入的电子邮件是正确的格式,如果不是,我将能够向用户发送错误消息。不幸的是,我不能得到虚假的回报。执行。.match()为什么阻止我的代码执行?

这里是我当前的代码:

function validate(){ 
    var email = $('input.email').value; 
    var emailRE = /^.*@.+\..{2,5}$/; 
    if (email.match(emailRE)){ 
     alert("This is true"); 
    } else { 
     alert("This isn't true."); 
    } 
    return false; 
} 

当我执行此,重新加载页面和表单提交,既不警报熄灭。但是,当我把整个if,else部分,返回false;执行,并且页面不重新加载。我也尝试拿出'.match()',代码执行得很好。那么导致它失败的.match()部分有什么问题?

任何帮助非常感谢。谢谢!

+0

你用什么浏览器测试了这个btw?你发布的正则表达式虽然可能不是你想要的许多原因,但它是格式良好的,不应该导致'match'抛出异常。你确定'email'正在获得你期望的价值吗? “email”实际上可能不是一个字符串,不管它是什么(可能是'undefined')都没有'match'方法。 – 2011-05-02 01:55:22

+0

使用Firefox 4.;) – Sawyer 2011-05-02 22:28:41

回答

4

你必须使用$('input.email').val()代替$('input.email').value

http://jsfiddle.net/bMJH2/6/

value是的DOM对象。但是你所处理的对象是一个jQuery对象,所以正确的方法是使用val()。如果使用value在Firefox/Firebug中运行它,它将显示错误:

email is undefined 
[Break On This Error] if (email.match(emailRE)){ 
+0

非常感谢您的回应!但是,页面仍然不会执行返回false或警报。它用相同的“症状”重新加载页面。任何其他想法?谢谢! – Sawyer 2011-05-02 22:09:39

+1

我收回它!你绝对正确!原来我正在加载这个类,但是我给了这个元素一个ID属性。再次感谢您的帮助,非常感谢。 ;) – Sawyer 2011-05-02 22:42:16

相关问题