JavaScript 表单验证 - "False" 未按需要工作

JavaScript Form Validate - "False" not working as needed

我正在尝试评估表单 text/email 字段以查看是否有内容,如果有,运行 它通过了正则表达式评估。当我将正则表达式代码包含在 SendEmail 函数中以及其余逻辑时它工作正常但是当我尝试将正则表达式部分移出它自己的函数(validateEmailAddress)时,验证仍然有效但它似乎不想return false 就停下来。相反,它继续到 ajax 部分并发送电子邮件,无论它是否通过正则表达式测试。这是相同的代码,所以我不确定为什么 "return false" 在将正则表达式移出到它自己的函数中后不起作用。

感谢任何想法,谢谢!

   function validateEmailAddress(address) {

   filter = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
      if (!filter.test(address)) {
      alert(address + ' - Is an invalid email address.');
      return false;
   }
   }

    function SendEmail() {
   var emailFromVal = document.getElementById("EmailFrom").value;
   var emailToVal = document.getElementById("EmailTo").value;

   if (emailFromVal != 0) {
    validateEmailAddress(emailFromVal);
   } else {
    alert("Please provide your email address.");
    return false;       
   }

   if (emailToVal != 0) {
   }
   else {
    alert("Please provide your friend's email address.");
    return false;
   }

   $.ajax({
    method: 'POST',
    url: '/_ajax/emailshare/',
    dataType: 'json',
    data: formCollection,
    success: function (data) {
        ///send that email out 
    }
   });
   }

您没有对 validateEmailAddress() 中的 return 值执行任何操作,试试这个:

if (emailFromVal != 0) {
    if(!validateEmailAddress(emailFromVal)){
        return false;
    }
} else {
    alert("Please provide your email address.");
    return false;       
}

此外,当电子邮件有效时,您需要从 validateEmailAddress() return 为真:

function validateEmailAddress(address) {
    filter = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
    if (!filter.test(address)) {
        alert(address + ' - Is an invalid email address.');
        return false;
    }
    return true;
}

return false; in validateEmailAddress 将 return 仅来自 validateEmailAddress,而不是来自封闭函数 (SendEmail).

您的选择是:

  1. 从附件中检查 validateEmailAddress 的 return 值 功能:

    if(!validateEmailAddress(address)) return false;

  1. 从 validateEmailAddress 抛出并从 封闭函数(这将允许错误向上传播 堆叠到任意长度直到你抓住它——也就是说,你没有 不仅要从封闭函数中捕获,还要从它的函数中捕获 来电者或其来电者的来电者,依此类推)。