Javascript函数返回undefined,因为它不应该

时间:2016-03-25 09:17:54

标签: javascript jquery email-validation

我有功能检查动态输入字段和某个类。这些字段需要电子邮件地址,以便检查它是否是有效的电子邮件地址。

可能有许多电子邮件字段,如果其中一个电子邮件地址测试失败,则应返回FALSE,否则应返回TRUE。最后,当提交点击save_form()时。如果它得到false,它应该停止,否则继续。但它总是“未定义”。

这就是我所拥有的:

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函数返回undefined。我把console.log()放在任何地方,可能它对我一无所知,但任何帮助都非常感激。

1 个答案:

答案 0 :(得分:3)

您的回复是从您的回复转移到validate_email_extensions,而不是从validate_email_extensionssave_form,正如您所期望的那样。

validate_email_extensions需要将值恢复为save_form

您的函数正确返回值的唯一时间是FALSE

if (email_fields_length) {

当控件进入if条件时,它不返回任何值。