为什么.match()阻止我的代码执行?

时间:2011-05-02 01:39:12

标签: javascript jquery validation email

我正在尝试验证表单时遇到问题。我正在尝试确保电子邮件输入的电子邮件格式正确,如果不是,我将能够向用户发送错误消息。不幸的是,我无法得到假的回报;执行。

这是我目前的代码:

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()部分出了什么问题呢?

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

1 个答案:

答案 0 :(得分: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)){