Javascript 函数 returns 未定义,因为它不应该是

Javascript function returns undefined as it should not be

我有检查某个 class 动态输入字段的功能。这些字段采用电子邮件地址,因此检查它是否是有效的电子邮件地址。

可以有多个email字段,如果其中一个没有通过email地址测试,它应该return FALSE,否则它应该return TRUE。最后,当点击提交时 save_form() 运行。如果它得到 false,它应该停止,否则继续。但它总是 "undefined"。

这是我的:

function validate_email_string(email_address) {
  var emailReg=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
  var emailTest = emailReg.test(email_address);
  var result = (emailTest === false) ? false : true;
  return result;
}

function validate_email_extensions(email_field_selector, message) {
  var invalid_message = null;
  if (typeof message !== "undefined") {
    invalid_message = message;
  } else {
    invalid_message = '<?=lang("i18n_invalid_email_address");?>';
  }
  var email_fields_length = $(email_field_selector).length;
  var is_valid = true;
  if (email_fields_length) {
    $(email_field_selector).each(function(index, el) {
      if($(el).val()) {
        if(!validate_email_string($(el).val())) {
          is_valid = false;
        }
        if (index === email_fields_length - 1) {
          if (is_valid === false) {
            Interact.show(invalid_message);
          }
          return is_valid;
        }
      } else {
        if (index === email_fields_length - 1) {
          if (is_valid === false) {
            Interact.show(invalid_message);
          }
          return is_valid;
        }
      }
    });
  } else {
    return is_valid;
  }
}

function save_form() {
    var emails = validate_email_extensions('.jq-extension-email');
    if(!emails){return false}
    ....

但是 validate_email_extensions 函数 return 未定义。我把 console.log() 放在各处,可能它对我视而不见,但非常感谢任何帮助。

您的 return 是从您的循环到 validate_email_extensions,而不是您期望的从 validate_email_extensionssave_form

validate_email_extensions 需要 return 值仍然 save_form

唯一一次你的函数正确 returning 一个值是在这种情况下 FALSE

if (email_fields_length) {

当控制进入 if 条件时,它 return 没有任何价值。