Javascript验证错误

时间:2014-04-08 15:56:13

标签: javascript

请想象一下网络表单的这一部分。两个复选框(同名=" myCheckbox")和两个文本输入。如果选中第一个复选框,则第一个文本输入不能为空。如果选中第二个复选框,则第二个文本输入不能为空。为了验证这一点,我使用下面的脚本:

// huge validation code above   

}else if (!document.myForm.myCheckbox[0].checked && !document.myForm.myCheckbox[1].checked){ 
    jAlert ('Please select one of the two checkboxes!',function(){$(myForm.myCheckbox).focus();}); 
    return false;   

}else if (myForm.myCheckbox[0].checked && myForm.myFirstTextInput.value=="") {
    jAlert ('You have selected the first checkbox. Please make sure that the first text input is not empty!',function(){$(myForm.myFirstTextInput).focus();});
    return false;

}else if (myForm.myCheckbox[1].checked && myForm.mySecondTextInput.value=="") {
    jAlert ('You have selected the second checkbox. Please make sure that the second text input is not empty!',function(){$(myForm.mySecondTextInput).focus();});
    return false;

// huge validation code below   

一切正常。但是现在,我还要检查在第一个文本输入中用户是否输入了至少10位数字。我更新了验证码,请参阅以下内容:

// huge validation code above   

}else if (!document.myForm.myCheckbox[0].checked && !document.myForm.myCheckbox[1].checked){ 
    jAlert ('Please select one of the two checkboxes!',function(){$(myForm.myCheckbox).focus();}); 
    return false;   

}else if (myForm.myCheckbox[0].checked && myForm.myFirstTextInput.value=="") {
    jAlert ('You have selected the first checkbox. Please make sure that the    first text input is not empty!',function(){$(myForm.myFirstTextInput).focus();});
    return false;

}else if (myForm.myCheckbox[0].checked && myForm.myFirstTextInput.value!=="")
var x = document.getElementById("myFirstTextInput");
var y = x.value;
var totalNrOfDigits = 0;
for(var i = 0; i < y.length; i++){
if(/\d/.test(y[i])){
totalNrOfDigits++;
}
}
if(totalNrOfDigits < 10) {
jAlert ('Please make sure that the first text input contains at least 10 digits!',function(){$(myForm.myFirstTextInput).focus();});
return false;   


}else if (myForm.myCheckbox[1].checked && myForm.mySecondTextInput.value=="") {
    jAlert ('You have selected the second checkbox. Please make sure that the second text input is not empty!',function(){$(myForm.mySecondTextInput).focus();});
    return false;

// huge validation code below   

我的问题:在我添加至少10位数的支票后,如果用户点击了SECOND复选框,那么&#34; mySecondTextInput&#34;不再经过验证,表单已提交。我真的不明白为什么,并且已经浪费了大部分时间......

很抱歉,因为我没有添加整个代码:它非常庞大,它是一个非常复杂的网络表单。

1 个答案:

答案 0 :(得分:0)

在第二个代码示例中,您忘记了第11行的左大括号,因此只会评估else if条件后面的第一个语句。

}else if (myForm.myCheckbox[0].checked && myForm.myFirstTextInput.value!=="")
                                                                              ^
                                                                              |