Javascript JS电子邮件验证仍提交无效电子邮件

Javascript JS电子邮件验证仍提交无效电子邮件,javascript,jquery,validation,email-validation,Javascript,Jquery,Validation,Email Validation,我有一个字段,用户可以提交多封以逗号分隔的电子邮件。我希望JS验证能够实现两件事: 如果用户尝试不提交任何内容,他们会收到一个警报,提示他们必须输入电子邮件,这是有效的 如果用户试图提交任意数量的电子邮件,其中一封电子邮件的格式不正确,他们会收到一个警报,提示其中一封电子邮件的格式不正确,并且他们必须重新提交,但这不起作用 2的情况是,如果我以电子邮件的形式提交类似asddf的虚假内容,我: 一定要保持警惕耶! 但是,表单仍然会被提交,BOO 代码: 以美元计算的回报率。每个。。。正在从内部函数

我有一个字段,用户可以提交多封以逗号分隔的电子邮件。我希望JS验证能够实现两件事:

如果用户尝试不提交任何内容,他们会收到一个警报,提示他们必须输入电子邮件,这是有效的 如果用户试图提交任意数量的电子邮件,其中一封电子邮件的格式不正确,他们会收到一个警报,提示其中一封电子邮件的格式不正确,并且他们必须重新提交,但这不起作用 2的情况是,如果我以电子邮件的形式提交类似asddf的虚假内容,我:

一定要保持警惕耶! 但是,表单仍然会被提交,BOO 代码:

以美元计算的回报率。每个。。。正在从内部函数返回。您需要一种从外部函数返回false的方法。像这样的


对于第二种情况,如果电子邮件无效,您不会阻止click事件的默认行为。t.niese是正确的。将e作为参数添加到匿名单击函数中。然后在代码中,使用e.preventDefault而不是returnfalse。阅读文档:@Bjorn这不对,返回false包括e.preventDefault每个帖子:。我已经试过这个方法了,不是吗work@james:Bjorn没有说从回调方法返回false不包括preventDefault,但是当您将return false放在迭代回调中时,它没有取消那里的事件的意义。您要么需要像hair raisin suggest那样将return语句从迭代回调中移出,要么需要使用preventDefault,两者的工作原理相同。如果e.preventDefault不起作用,那么很可能是您做错了什么,或者您还需要添加e.stopPropagation。
$("#refer").click(function() {
  var input_emails = $('#friend_emails').val();
  if (input_emails === "") {
    alert("Please enter at least one friend's email to send invites")
    return false;
  } else {
    var parsed_emails = input_emails.split(',');
    $.each(parsed_emails, function( index, email_value ) {
      var trimmed_email = $.trim(email_value)
      var atpos = trimmed_email.indexOf("@");
      var dotpos = trimmed_email.lastIndexOf(".");
      if (atpos< 1 || dotpos<atpos+2 || dotpos+2>=trimmed_email.length) {
        alert(trimmed_email + " " + "is not a valid email format, please correct and resubmit");
        return false;
      }
    });
  }  
});
$("#refer").click(function() { var input_emails = $('#friend_emails').val(); if (input_emails === "") { alert("Please enter at least one friend's email to send invites") return false; } else { var success = true; var parsed_emails = input_emails.split(','); $.each(parsed_emails, function( index, email_value ) { var trimmed_email = $.trim(email_value) var atpos = trimmed_email.indexOf("@"); var dotpos = trimmed_email.lastIndexOf("."); if (atpos< 1 || dotpos=trimmed_email.length) { alert(trimmed_email + " " + "is not a valid email format, please correct and resubmit"); success = false; } }); return success; }
});