【问题标题】:jQuery not validating email formatjQuery 不验证电子邮件格式
【发布时间】:2013-10-18 11:44:52
【问题描述】:

一个非常具体的问题,这个 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();

    });

【问题讨论】:

  • 看到var email是一个jQuery对象,你应该尝试email.val()来获取它的值。
  • 记录或提醒email.value 并检查它是否符合预期。
  • 仅供参考,正则表达式看起来有效:regex101.com/r/sH7wB0
  • 注意:您的正则表达式将无法匹配 something+deliver@domain.tld,并且带有特殊字符的域也不会被标记为有效。这部分也有点奇怪([a-zA-Z0-9]{2,4})+ 你说. 之后的最后一部分有一个或多个出现2-4 [a-zA-Z0-9],虽然这适用于超过4 字符的tlds,它看起来奇怪。

标签: jquery forms validation


【解决方案1】:

按照我的评论:

看到 var email 是一个 jQuery 对象,你应该尝试 email.val() 来获取 它的价值。

如果您使用email.val(),我制作了this Fiddle,表明它可以正常工作。

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

【讨论】:

    【解决方案2】:

    jquery Dom 对象没有属性value

    使用这个

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

    而不是

    $("#form_email").value;
    

    希望这会有所帮助....

    【讨论】:

      猜你喜欢
      • 2018-07-30
      • 2017-10-23
      • 2014-07-28
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 2016-11-02
      相关资源
      最近更新 更多