Lors de l'utilisation des nouveaux navigateurs prenant en charge HTML5 (FireFox 4 par exemple);
et un champ de formulaire a l'attribut required='required'
;
et le champ de formulaire est vide / vide;
et le bouton de soumission est cliqué;
les navigateurs détectent que le champ "obligatoire" est vide et ne soumet pas le formulaire;
à la place, le navigateur affiche un indice demandant à l'utilisateur de taper du texte dans le champ.
Maintenant, au lieu d'un seul champ de texte, j'ai un groupe de cases à cocher , parmi lesquelles au moins une doit être cochée / sélectionnée par l'utilisateur.
Comment puis-je utiliser l' required
attribut HTML5 sur ce groupe de cases à cocher? (Étant donné qu'une seule des cases à cocher doit être cochée, je ne peux pas mettre l' required
attribut sur chaque case à cocher)
ps. J'utilise simple_form , si cela compte.
METTRE À JOUR
L' attribut HTML 5multiple
pourrait-il être utile ici? Quelqu'un l'a-t-il déjà utilisé pour faire quelque chose de similaire à ma question?
METTRE À JOUR
Il semble que cette fonctionnalité n'est pas prise en charge par la spécification HTML5: ISSUE-111: Que signifie input. @ Required pour @type = checkbox?
(Statut du problème: le problème a été marqué comme clos sans préjudice. ) Et voici l'explication .
MISE À JOUR 2
C'est une vieille question, mais je voulais clarifier que l'intention originale de la question était de pouvoir faire ce qui précède sans utiliser Javascript - c'est-à-dire en utilisant une manière HTML5 de le faire. Rétrospectivement, j'aurais dû rendre le "sans Javascript" plus évident.
la source
Réponses:
Malheureusement, HTML5 ne fournit pas un moyen prêt à l'emploi de le faire.
Cependant, en utilisant jQuery, vous pouvez facilement contrôler si un groupe de cases à cocher a au moins un élément coché.
Considérez l'extrait de code DOM suivant:
Vous pouvez utiliser cette expression:
qui renvoie
true
si au moins un élément est vérifié. Sur cette base, vous pouvez implémenter votre contrôle de validation.la source
C'est un truc simple. C'est du code jQuery qui peut exploiter la validation html5 en modifiant les
required
propriétés si l'une d'entre elles est cochée. Voici votre code html (assurez-vous d'ajouter les éléments requis pour tous les éléments du groupe.)Voici le script jQuery, qui désactive la vérification de validation supplémentaire si l'un d'entre eux est sélectionné. Sélectionnez en utilisant l'élément de nom.
Petit gotcha ici: Puisque vous utilisez la validation html5, assurez-vous de l'exécuter avant qu'il ne soit validé, c'est-à-dire avant l'envoi du formulaire.
la source
Je suppose qu'il n'y a aucun moyen standard HTML5 pour ce faire, mais si cela ne vous dérange pas en utilisant une bibliothèque de jQuery, je suis en mesure de réaliser une validation « groupe de cases à cocher » en utilisant webshims ' " requis groupe " de :
Les documents pour les groupes requis disent:
Et voici un exemple de la façon dont vous l'utiliseriez:
J'utilise principalement des webshims pour polyfill des fonctionnalités HTML5, mais il a également de superbes extensions optionnelles comme celle-ci.
Il vous permet même d'écrire vos propres règles de validité personnalisées. Par exemple, j'avais besoin de créer un groupe de cases à cocher qui n'était pas basé sur le nom de l'entrée, j'ai donc écrit ma propre règle de validité pour cela ...
la source
HTML5 ne prend pas directement en charge le fait d'exiger qu'une seule / au moins une case soit cochée dans un groupe de cases à cocher. Voici ma solution utilisant Javascript:
HTML
JAVASCRIPT
Le javascript s'assurera qu'au moins une case est cochée, puis supprimera l'intégralité du groupe de cases à cocher. Si la case à cocher qui est cochée devient non cochée, alors il faudra toutes les cases à cocher, encore une fois!
la source
J'ai eu le même problème et ma solution était la suivante:
HTML:
JS:
https://jsfiddle.net/oywLo5z4/
la source
Inspiré par les réponses de @thegauraw et @Brian Woodward, voici un peu que j'ai rassemblé pour les utilisateurs de JQuery, y compris un message d'erreur de validation personnalisé:
Notez que certaines cases à cocher de mon formulaire sont cochées par défaut.
Peut-être que certains d'entre vous, les assistants JavaScript / JQuery pourraient renforcer encore plus cela?
la source
nous pouvons le faire facilement avec html5 également, il suffit d'ajouter du code jquery
Démo
HTML
Jquery
la source
J'ai ajouté une radio invisible à un groupe de cases à cocher. Lorsqu'au moins une option est cochée, la radio est également configurée pour vérifier. Lorsque toutes les options sont annulées, la radio est également réglée pour annuler. Par conséquent, le formulaire utilise l'invite radio "Veuillez cocher au moins une option"
display: none
car la radio ne peut pas être focalisée.HTML
Javascript
CSS
https://jsfiddle.net/codus/q6ngpjyc/9/
la source
radio
la valeuropacity
0 et la valeuropacity
1 lors de la soumission, afin de pouvoir contrôler si le contour rouge apparaît ou non.visibility: hidden
ou l' autre oudisplay: none
simplement pour éviter de salir un peu la convivialité. Parce que les lecteurs d'écran et autres outils d'accessibilité trouveront probablement le bouton radio masqué.Salut, utilisez simplement une zone de texte supplémentaire au groupe de case à cocher.Lorsque vous cliquez sur une case à cocher, mettez des valeurs dans cette zone de texte.Faites en sorte que cette zone de texte soit requise et en lecture seule.
la source
Je me rends compte qu'il existe une tonne de solutions ici, mais je n'ai trouvé aucune d'elles répondant à toutes les exigences que j'avais:
name
pour soumettre des problèmes Github via leur API, et j'utilisais le nomlabel[]
pour attribuer des étiquettes à de nombreux champs de formulaire (deux listes de cases à cocher et quelques sélections et zones de texte) - étant donné que j'aurais pu y parvenir sans leur partage le même nom, mais j'ai décidé de l'essayer et cela a fonctionné.La seule exigence pour celui-ci est jQuery. Vous pouvez combiner cela avec l'excellente solution de @ ewall pour ajouter des messages d'erreur de validation personnalisés.
la source
Voici une autre astuce simple en utilisant Jquery !!
HTML
JQuery
C'est tout .. cela fonctionne car si aucune case n'est cochée, rien concernant le groupe de cases à cocher (y compris son nom) n'est posté sur le serveur
la source
Essayer:
ou
Plus précisement:
Lorsque vous lisez des données à partir du tableau de cases à cocher, assurez-vous que le tableau a:
Dans ce cas:
la source