Je dois avoir une liste de cases à cocher avec la condition qu'au moins l'une d'elles doit être vérifiée.
Le code suivant produit cet effet.Annuler l'événement click de la case à cocher empêche de le vérifier?
document.querySelector('div').addEventListener('click', function(evt){
if(this.querySelectorAll('input:checked').length == 0)
evt.preventDefault() ;
}) ;
<div>
<input type=checkbox checked>
<input type=checkbox>
<input type=checkbox>
</div>
C'est bien, cependant, je ne comprends pas pourquoi ce code fonctionne même.
Tout d'abord, je fais un .preventDefault()
sur l'événement, cliquez seulement après que je l'ai vérifié la condition que dit il n'y a pas vérifié les cases à cocher. Donc, l'annulation de l'événement click à ce stade ne devrait faire aucune différence.
Deuxièmement, le code fonctionne même si vous essayez de cocher les cases à l'aide du clavier, ce qui est totalement bizarre car je ne fais qu'annuler l'événement click.
Veuillez expliquer pourquoi le code fonctionne comme il le fait.
Intéressant, .. Je suppose que preventDefault a une forme de logique de rollback. – Keith