Проверка Javascript флажок - PullRequest
       1

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

4 голосов
/ 23 октября 2011

Я хотел бы использовать 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>

Всякий раз, когда проверяется форма или нет, возвращается предупреждение, что форма не была проверена, несмотря на то, что я проверял ее вручную. Как мне это исправить?

Ответы [ 3 ]

12 голосов
/ 23 октября 2011

Вы должны привязать событие к форме вместо кнопки отправки.Также, если вы хотите, чтобы входные данные флажка были отправлены, вместо идентификатора добавьте имя:

<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;
    }
}
1 голос
/ 23 октября 2011

Поскольку вы добавили эту функцию при нажатии кнопки «Отправить», значение «this» не относится к флажку, который вы ожидаете получить в функции.Вы можете заменить «this» на document.getElementById («подтверждение»)

1 голос
/ 23 октября 2011

Вы проверяете, отмечена ли кнопка отправки, что, естественно, никогда не будет.

Отправьте форму функции, а не саму кнопку отправки:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...