请想象一下网络表单的这一部分。两个复选框(同名=" 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;不再经过验证,表单已提交。我真的不明白为什么,并且已经浪费了大部分时间......
很抱歉,因为我没有添加整个代码:它非常庞大,它是一个非常复杂的网络表单。
答案 0 :(得分:0)
在第二个代码示例中,您忘记了第11行的左大括号,因此只会评估else if
条件后面的第一个语句。
}else if (myForm.myCheckbox[0].checked && myForm.myFirstTextInput.value!=="")
^
|