2017-08-08 1 views
0

J'ai du code qui vérifie si au moins une case est cochée puis soumet le formulaire (MailChimp). Mon problème est que je ne sais pas comment arrêter la soumission MailChimp si elle attrape qu'aucune case à cocher n'est sélectionnée. En ce moment, il affiche l'alerte, puis soumet le formulaire de toute façon ... peu d'aide.Utilisation de la validation de case à cocher requise pour empêcher la soumission de formulaire

<form onsubmit="valthis()" action="//mailchimp form" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> 

// form html 

     <script>function valthis() { 
var checkBoxes = document.getElementsByClassName('myCheckBox'); 
var isChecked = false; 
    for (var i = 0; i < checkBoxes.length; i++) { 
     if (checkBoxes[i].checked) { 
      isChecked = true; 
     }; 
    }; 
    if (isChecked) { 
     alert('At least one checkbox is NOT checked!'); 
     } 
}</script> 

<input type="submit" value="Subscribe to notifications" name="subscribe" id="mc-embedded-subscribe" class="button"> 

Répondre

0

Vous pouvez faire return la valeur de votre fonction JS lorsque les données de traitement: de

<form onsubmit="return valthis()" action="//mailchimp form" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> 

<script> 
function valthis() { 
    var checkBoxes = document.getElementsByClassName('myCheckBox'); 
    var isChecked = false; 

    for (var i = 0; i < checkBoxes.length; i++) { 
     if (checkBoxes[i].checked) { 
      isChecked = true; 
      break; //don't need to continue the loop once a checkbox was found 
     } 
    } 

    if (!isChecked) { 
     alert('At least one checkbox is NOT checked!'); 
     return false; 
    } 

    return true; 
} 
</script> 

<input type="submit" value="Subscribe to notifications" name="subscribe" id="mc-embedded-subscribe" class="button"> 
1

Vous devez ajouter un événement au formulaire soumettre

document.getElementsByName("subscribe").onsubmit(function(event) { 
    if(!isChecked) { //If not checked 
     event.preventDefault(); // stops the form submitting 
    } 
}); 

Si aucune case à cocher sont vérifié preventDefault. Cela empêche le formulaire de soumettre

+0

J'ai ajouté le code 'document.getElementsByName' sous le javascript actuel. Ne pas aller. Est-ce que je le mets au mauvais endroit? – testing123

+0

'Fonction valthis() { var checkBoxes = document.getElementsByClassName ('myCheckBox'); var isChecked = true; pour (var i = 0; i testing123

+0

Comme @ utilisateur5753132 a dit que vous devez l'ajouter en dehors de la fonction – y0hami