#javascript #checkbox
#javascript #флажок
Вопрос:
Я хотел бы использовать Javascript, чтобы проверить, был ли установлен флажок, и если флажок не установлен, форма отправки не будет продолжена, пока она не будет установлена. Ниже приведены мои коды.
<SCRIPT language=javascript>
function checkAcknowledgement(checkbox){
alert(checkbox.toString());
if (checkbox.checked == false){
alert('Please read through the acknowledgement and acknowledge it.');
return false;
} else {
return true;
}
}
</script>
<form action="ioutput.php" method="POST">
<input name="form" type="hidden" id="form" value="true">
... some html form ...
<input type="checkbox" id="acknowledgement" value="1" /><br><br>
<input type="submit" value="submit" onclick="return checkAcknowledgement(this)"/>
</form>
Всякий раз, когда форма проверяется или нет, она возвращает предупреждение о том, что форма не была проверена, несмотря на то, что я проверял ее вручную. Как я должен это исправить?
Комментарии:
1. Обратите внимание, что вы добавляете функцию возврата и передаете «это» на кнопку отправки, а не на флажок, поэтому условие «checkbox.checked == false» применяется к кнопке отправки, а не к флажку, решение Rob W решит вашу проблему 🙂
Ответ №1:
Вы должны привязать событие к форме вместо кнопки отправки. Кроме того, если вы хотите, чтобы ввод флажка был отправлен, прикрепите имя вместо идентификатора:
<input type="checkbox" name="acknowledgement" value="1" /><br><br>
<form action="ioutput.php" method="POST" onsubmit="return checkAcknowledgement(this)">
Затем измените функцию:
function checkAcknowledgement(form){
var checkbox = form["acknowledgement"];
alert(checkbox); //shows [HTMLInputElement]
if (!checkbox.checked){ //A shorter method for checkbox.checked == false
alert('Please read through the acknowledgement and acknowledge it.');
return false;
} else {
return true;
}
}
Ответ №2:
Вы проверяете, установлена ли кнопка отправки, чего, естественно, никогда не будет.
Отправьте форму функции, а не саму кнопку отправки:
<input type="submit" value="submit" onclick="return checkAcknowledgement(this.form)"/>
Вам нужно имя флажка, чтобы найти его:
Используйте ссылку на форму для доступа к флажку:
<script type="text/javascript">
function checkAcknowledgement(frm){
var checked = frm.acknowledgement.checked;
if (!checked){
alert('Please read through the acknowledgement and acknowledge it.');
}
return checked;
}
</script>
Ответ №3:
Поскольку вы добавили эту функцию при нажатии кнопки отправки, значение ‘this’ не относится к флажку, который вы ожидаете получить в функции. Вы можете заменить ‘this’ на document.getElementById(‘подтверждение’)