Chciałbym użyć JavaScript, aby sprawdzić, czy pole wyboru zostało sprawdzone i jeśli pole wyboru nie zostanie sprawdzone, formularz zgłoszeniowy nie byłby kontynuowany, dopóki nie zostanie sprawdzona. Poniżej znajdują się moje kody.

<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>

Za każdym razem, gdy formularz jest sprawdzany, zwraca ostrzeżenie ostrzeganie, że formularz nie został sprawdzony, mimo mnie sprawdzam ręcznie. Jak mam to naprawić?

4
thotheolh 23 październik 2011, 18:31

3 odpowiedzi

Najlepsza odpowiedź

Musisz wiązać zdarzenie do formularza zamiast przycisku przesyłania. Ponadto, jeśli chcesz przesłanie wejścia poleceniowego, załóż nazwę zamiast ID:

<input type="checkbox" name="acknowledgement" value="1" /><br><br>
<form action="ioutput.php" method="POST" onsubmit="return checkAcknowledgement(this)">

Następnie zmodyfikuj funkcję:

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;
    }
}
12
Rob W 23 październik 2011, 14:33

Sprawdzasz, czy sprawdzany jest przycisk przesyłania, który nigdy nie będzie.

Wyślij formularz do funkcji, a nie sam przycisk Prześlij:

<input type="submit" value="submit" onclick="return checkAcknowledgement(this.form)"/>

Potrzebujesz nazwy w polu wyboru, aby go znaleźć:

Użyj odniesienia formularza, aby uzyskać dostęp do pola wyboru:

<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>
1
Guffa 23 październik 2011, 14:36

Ponieważ dodano tę funkcję w OnClick przycisku Prześlij, wartość "to" nie odnosi się do pola wyboru, które spodziewasz się otrzymać w funkcji. Możesz zastąpić "to" przez Document.getElementByid ("Potwierdzenie")

1
Bao Nhan 23 październik 2011, 14:37