【问题标题】:Return false from Function within function - Javascript Form Validation从函数内的函数返回 false - Javascript 表单验证
【发布时间】:2014-01-05 16:38:16
【问题描述】:

我创建了一个可以验证表单并且工作正常的函数,但我现在想将其分解为 3 个单独的函数。

我现在有一个被提交的表单调用的函数,它声明了一些数组并运行这三个函数。当它是一个大函数时,发现错误的各种 if 语句将返回 false;然后将返回表单并停止发送。

但是现在我已经在一个函数中得到了函数,我不知道如何将该消息“假”返回到表单。

下面是表单提交按钮调用的函数,然后是它调用的主函数。 我尝试创建一个空变量,该变量返回而不是 false,然后由 validateSignup 函数将其赋值为 false,但它不起作用。

function validateSignup()
{
 // Declaring Arrays (deleted array contents)
 var errorSpansArray=[whatever];   
 var regexErrorArray=[whatever];
 var regexArray=[whatever];

validateText(0,6,errorSpansArray, regexErrorArray, regexArray);
passMatch();
genderCountryCheck()  
}

function validateText(formNumber, numberElements, errorSpansArrayName, regexErrorArrayName, regexArrayName)
 {              
                     for (x = 0; x<numberElements; x++)
                   {
                   var spanName = errorSpansArrayName[x];
                   var textError = document.getElementById(spanName);
                   var y=document.forms[formNumber].elements[x];
                   if (!y.value)
                   {           
                    errorMessage(0,spanName,x);
                   return false;
                   }
                   if(!regexArrayName[x].test(y.value)){  
                   textError.innerHTML = regexErrorArrayName[x];
                   return false;

                   }
               }

更新: 感谢您的回复。我找到了一个似乎对我有用的解决方案。

 function validateSignup()
 {
 // Declaring Arrays (deleted array contents)
 var errorSpansArray=[whatever];   
 var regexErrorArray=[whatever];
 var regexArray=[whatever];

var returnValidateText=validateText(0,6,errorSpansArray, regexErrorArray, regexArray);
var returnPassMatch = passMatch();
var returnGenderCountry = genderCountryCheck();

if (returnValidateText || returnPassMatch || returnGenderCountry === false)
    {
    return false;            
    }
    else{
    return true;    
    }

}

【问题讨论】:

    标签: javascript forms


    【解决方案1】:

    如果你调用这个函数,它会返回一个值

       var formIsValid = function validateText(....)
    

    应该可以解决问题。

    function validateSignup()
    {
         // Declaring Arrays (deleted array contents)
         var errorSpansArray=[whatever];   
         var regexErrorArray=[whatever];
         var regexArray=[whatever];
    
         var formIsValid = false;
    
        formIsValid = validateText(0,6,errorSpansArray, regexErrorArray, regexArray);
        formIsValid = passMatch();
        formIsValid = genderCountryCheck()  
    }
    

    【讨论】:

      【解决方案2】:

      一种方法是直接检查单个函数的返回值并根据它返回

      if (!validateText(0,6,errorSpansArray, regexErrorArray, regexArray)) {
        return false;
      }
      if (!passMatch()) {
        return false;
      }    
      if (!genderCountryCheck()) { 
        return false;
      }
      

      虽然使用单个条件会更短

      return
        validateText(0,6,errorSpansArray, regexErrorArray, regexArray) &&
        passMatch() &&
        genderCountryCheck();
      

      【讨论】:

        【解决方案3】:

        在 javascript 中,return false 表示 false 将作为调用方法的值返回。所以你需要类似的东西

        If(validateText()){
            return true;
        }
        

        以及类似的其余代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-12
          • 2020-02-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多