JavaScript表单验证 - “False”无法正常工作

时间:2015-04-06 12:12:23

标签: javascript regex validation form-submit

我正在尝试评估表单文本/电子邮件字段以查看是否存在某些内容,如果有,请将其运行到正则表达式评估之后。当我使用其余逻辑将正则表达式代码包含在SendEmail函数中时,它工作正常但是当我尝试将正则表达式部分移动到它自己的函数(validateEmailAddress)时,验证仍然有效,但它没有&#39 ; t似乎想要返回false而只是停止。相反,它继续到ajax部分并发送电子邮件,无论它是否通过正则表达式测试。这是相同的代码所以我不确定为什么"返回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 
    }
   });
   }

2 个答案:

答案 0 :(得分:0)

你没有对validateEmailAddress()的返回值做任何事情,试试这个:

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

另外,当电子邮件有效时,您需要从validateEmailAddress()返回true:

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;
}

答案 1 :(得分:0)

return false;中的

validateEmailAddress将仅从validateEmailAddress返回,而不是从封闭函数(SendEmail)返回。

您的选择是:

  1. 检查附件中validateEmailAddress的返回值 功能:

    if(!validateEmailAddress(address))返回false;

  2. OR

    1. 从validateEmailAddress抛出并从中捕获错误 封闭函数(这个' ll允许错误传播 堆叠到任意长度,直到你抓住它 - 即,你不会 必须从封闭的功能,但也从它的 呼叫者或呼叫者的呼叫者,等等等。)