Я создал анкету, которая имеет проблемы с проверкой. Существует несколько проверяющих функций, вызываемых при нажатии кнопки отправки. Но первая проверяющая функция затем вызывается дважды. Чтобы показать проблему, я сделал версию с голыми костями, которая имеет ту же проблему. Это весь исходный код:Самый странный повторный вызов функции когда-либо
<!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() выполняется. Что вызывает это и как его решить?
Спасибо, это действительно трюк! –