【发布时间】:2013-12-02 18:50:34
【问题描述】:
我制作了一个验证有问题的调查表。有几个验证函数,在单击提交按钮时调用。但是第一个验证函数会被调用两次。为了显示这个问题,我制作了一个有同样问题的简单版本。这是整个源代码:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Demo Double Call</title>
</head>
<body>
<form name="upssForm" action="submit.php" method="POST" onsubmit="return validateForm()">
A1 <input type="radio" name="A" value="1">
A2 <input type="radio" name="A" value="2"><br>
B1 <input type="radio" name="B" value="1">
B2 <input type="radio" name="B" value="2"><br>
<button type="button" onclick="validateForm()">Validate and submit button</button><br>
<input type="submit" value="Validate and submit input">
</form>
<script>
function checkA() {
var radioA = upssForm.elements['A'];
if (radioA[0].checked == false) {
alert('A1 not checked');
return false;
}
else return true;
}
function checkB() {
var radioB = upssForm.elements['B'];
if (radioB[0].checked == false) {
alert('B1 not checked');
return false;
}
else return true;
}
function validateForm() {
checkA();
checkB();
if ((checkA() == false) || (checkB() == false))
return false;
else
upssForm.submit();
// return true; /* doesn't work either with the submit input */
}
</script>
</body>
</html>
只需单击提交按钮或提交输入,就会看到警报“A1 未检查”出现两次,这是在函数 checkB() 执行后的第二次。是什么原因造成的,我该如何解决?
【问题讨论】:
标签: javascript function validation