从函数中的函数返回false - Javascript表单验证

时间:2014-01-05 16:38:16

标签: javascript forms

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

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

但是现在我已经在一个函数中找到了函数,我无法弄清楚如何将该消息“false”返回到表单中。

下面是表单提交按钮调用的函数,后跟它调用的main函数。 我尝试创建一个返回而不是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;    
    }

}

3 个答案:

答案 0 :(得分: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()  
}

答案 1 :(得分:0)

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

返回
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();

答案 2 :(得分:0)

在javascript中返回false表示false将作为调用方法的值返回。所以你需要像

这样的东西
If(validateText()){
    return true;
}

同样其余的代码。