Проверка флажка Javascript

#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(‘подтверждение’)