我创建了一个验证表单并且工作正常的函数,但我现在想将其分解为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;
}
}
答案 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;
}
同样其余的代码。