2016-08-25 4 views
0

Ich habe ein Formular mit einem Kontrollkästchen, das in bestimmten Fällen angezeigt wird. Ich möchte überprüfen, ob das Kontrollkästchen nur dann aktiviert ist, wenn es angezeigt wird. In anderen Fällen möchte ich, dass das Formular beim Klicken auf den Absenden-Button gesendet wird. Ich schrieb die folgende Funktion, aber es funktioniert nicht:Checkbox-Validierung, wenn das Kontrollkästchen nur angezeigt wird

function checkTheBox() { 
window.onload = function() { 
var visible = document.getElementById("checkbox").isDisplayed(); 
if(!visible) 
    return true; 
else if(visible){ 
    var checkbox = document.getElementById("checkbox"); 
    if(checkbox.checked) 
     return true; } 
    else{ 
     alert('You must agree to the terms first.'); 
     return false; 
    } 
}; } 

Dies sind meine HTML-Elemente:

<div class='input-block' id='div_checkbox' style='display: none;'> 
    <input type="checkbox" id="checkbox" name="checkbox" value="0"> 
    <b>I agree to all terms and conditions</b><br /> 
    </div> 

Was mache ich falsch?

+0

Und was ist, wenn ein Besucher Ihrer Seite diese Checkbox über die Konsole entfernt? – Legionar

+0

Legionar hat Recht, das könnte ein Risiko sein. Überprüfen Sie immer auch Ihre Datenserver-Seite. Aber auch "funktioniert nicht". Wie genau? Erhalten Sie einen Fehler in der Konsole? Oder verhält es sich so, wie Sie es nicht erwarten? – ADyson

+0

ok, ich werde es auf der Serverseite validieren. Das Formular wird gesendet, ohne die Checkbox zu aktivieren, ich habe keine Fehler in der Konsole – Freckles

Antwort

0

Sie müssen prüfen, ob das Element undefined ist:

Aber Vorsicht, kann Benutzer entfernen Ihre Checkbox über eine Konsole, und wird in der Lage sein, Ihr Formular abzusenden, ohne die Checkbox.

Auch müssen Sie window.onload = function() { ... } nicht verwenden, einfach diesen Code verwenden und Funktion checkTheBox auf Formular aufrufen einreichen:

function checkTheBox() { 
    if (document.getElementById("checkbox") === 'undefined') { 
    return true; 
    } 
    else { 
    var checkbox = document.getElementById("checkbox"); 

    if (checkbox.checked) { 
     return true; 
    } 
    else { 
     alert('You must agree to the terms first.'); 
     return false; 
    } 
    } 
} 

Aber wie @ADyson sagte, Ihre Daten stets auf Server-Seite validieren.

+0

hinzugefügt werden. Falls Sie jQuery verwenden. 'if ($ (). is (': visible')) {....} else {;}' – MayTheSchwartzBeWithYou

+0

jQuery-Tag wird nicht erwähnt, auch OPs Code ist alles in einfacher JavaScript ... – Legionar

+0

Vielen Dank Legionär! Es ist nicht die Checkbox zu validieren, ich werde auch auf der Serverseite arbeiten. :) Danke nochmal für die prompte Antwort – Freckles

Verwandte Themen