【问题标题】:Why does .match() stop my code from executing?为什么 .match() 会阻止我的代码执行?
【发布时间】:2011-08-16 16:54:27
【问题描述】:

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

这是我当前的代码:

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

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

【问题讨论】:

  • 你用什么浏览器测试这个?您发布的正则表达式虽然出于多种原因可能不是您想要的,但格式正确,不应导致 match 引发异常。您确定email 正在获得您期望的价值吗? email 很可能实际上不是一个字符串,无论它是什么(可能是undefined)都没有match 方法。

标签: javascript jquery validation email


【解决方案1】:

您必须使用$('input.email').val() 而不是$('input.email').value

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

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

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

【讨论】:

  • 非常感谢您的回复!但是,页面仍然没有执行 return false 或 alerts。它使用相同的“症状”重新加载页面。还有什么想法吗?谢谢!
  • 我收回了!你绝对是正确的!原来我正在加载类,但我给了元素一个 ID 属性。再次感谢您的帮助,非常感谢。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
相关资源
最近更新 更多