J'aimerais faire quelque chose comme ça pour cocher un checkbox
en utilisant jQuery :
$(".myCheckBox").checked(true);
o
$(".myCheckBox").selected(true);
Une telle chose existe-t-elle ?
J'aimerais faire quelque chose comme ça pour cocher un checkbox
en utilisant jQuery :
$(".myCheckBox").checked(true);
o
$(".myCheckBox").selected(true);
Une telle chose existe-t-elle ?
Utilisez .prop()
:
$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
Si vous travaillez avec un seul élément, vous pouvez toujours accéder à l'élément sous-jacent. HTMLInputElement
et modifier son .checked
propriété :
$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;
L'avantage d'utiliser le .prop()
y .attr()
au lieu de cela, c'est qu'elles opèrent sur tous les éléments appariés.
El .prop()
n'est pas disponible, vous devez donc utiliser la méthode .attr()
.
$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);
Notez que c'est l'approche utilisée par les tests unitaires de jQuery avant la version 1.6 et est préférable à l'utilisation de $('.myCheckbox').removeAttr('checked');
puisque ce dernier, si la case était initialement cochée, modifiera le comportement d'un appel à .reset()
sur tout formulaire qui le contient - un changement de comportement subtil mais probablement malvenu.
Pour plus de contexte, une discussion incomplète des changements apportés au traitement de la checked
dans la transition de la 1.5.x à la 1.6 se trouve dans l'onglet notes de publication de la version 1.6 et le Attributs et propriétés de la section .prop()
documentation .
Oui, il s'agit de définir la valeur de l'attribut, et de la décocher en supprimant l'attribut. J'ai mis à jour ma réponse pour montrer cela.
Le problème ici est que vous avez besoin de quelque chose qui fonctionne pour les deux versions. Dans ce cas, vous pouvez utiliser le plugin :) Merci pour la mise à jour !
J'ai essayé ce code exact et cela n'a pas fonctionné pour moi dans le cas d'une case à cocher select all / select none qui doit cocher et décocher tous les éléments ainsi que vérifier leur état. À la place, j'ai essayé la réponse de @Christopher Harris et cela a fonctionné.
Pourquoi utiliser "form #mycheckbox" au lieu de simplement "#mycheckbox" ? L'identifiant est déjà unique dans tout le document, il est plus rapide et plus simple de le prendre directement.
Il s'agit de la manière correcte d'activer et de désactiver les cases à cocher avec jQuery, car elle est standard sur toutes les plates-formes, et se autoriser les reposts de formulaires.
$('.myCheckBox').each(function(){ this.checked = true; });
$('.myCheckBox').each(function(){ this.checked = false; });
Ce faisant, vous utilisez les normes JavaScript pour cocher et décocher les cases à cocher, de sorte que tout navigateur qui implémente correctement la propriété "checked" de l'élément checkbox exécutera ce code sans problème. Ce site debe tous les principaux navigateurs, mais je ne suis pas en mesure de tester les versions antérieures à Internet Explorer 9.
Le problème (jQuery 1.6) :
Lorsqu'un utilisateur clique sur une case à cocher, celle-ci cesse de répondre aux modifications de l'attribut "coché".
Voici un exemple d'attribut de case à cocher qui ne fait pas son travail après que quelqu'un ait a cliqué sur la case à cocher (cela se produit dans Chrome).
La solution :
En utilisant la propriété "checked" de JavaScript sur la balise DOM nous sommes en mesure de résoudre le problème directement, au lieu d'essayer de manipuler le DOM pour qu'il fasse ce que nous voulons. veulent à faire.
Ce plugin modifiera la propriété checked de tout élément sélectionné par jQuery, et réussira à cocher et décocher les cases à cocher en toutes circonstances. Ainsi, bien que cette solution puisse sembler trop contraignante, elle améliorera l'expérience utilisateur de votre site et contribuera à prévenir la frustration des utilisateurs.
(function( $ ) {
$.fn.checked = function(value) {
if(value === true || value === false) {
// Set the value of the checkbox
$(this).each(function(){ this.checked = value; });
}
else if(value === undefined || value === 'toggle') {
// Toggle the checkbox
$(this).each(function(){ this.checked = !this.checked; });
}
return this;
};
})( jQuery );
Si vous ne souhaitez pas utiliser de plugin, vous pouvez également utiliser les extraits de code suivants :
// Check
$(':checkbox').prop('checked', true);
// Un-check
$(':checkbox').prop('checked', false);
// Toggle
$(':checkbox').prop('checked', function (i, value) {
return !value;
});
Dans votre premier exemple JSFiddle, vous devriez utiliser removeAttr('checked')
plutôt que attr('checked', false)
@DanielXMoore, Vous contournez le problème. L'exemple visait à montrer qu'une fois que l'utilisateur a cliqué sur la case à cocher, le navigateur ne répond plus à la question checked
les changements d'attributs, indépendamment de de la méthode utilisée pour les modifier.
@ChristopherHarris Ok, tu as raison, j'ai manqué ça. À partir de jQuery 1.6, ne faut-il pas utiliser la méthode .prop ? $('.myCheckBox').prop('checked', true)
De cette façon, il s'appliquera automatiquement à l'ensemble des éléments appariés (uniquement lors de la définition, car l'obtention ne concerne que le premier élément).
Vous pouvez faire
$('.myCheckbox').attr('checked',true) //Standards compliant
o
$("form #mycheckbox").attr('checked', true)
Si vous avez un code personnalisé dans l'événement onclick de la case à cocher que vous voulez déclencher, utilisez celui-ci à la place :
$("#mycheckbox").click();
Vous pouvez décocher en supprimant entièrement l'attribut :
$('.myCheckbox').removeAttr('checked')
Vous pouvez cocher toutes les cases comme ceci :
$(".myCheckbox").each(function(){
$("#mycheckbox").click()
});
@Michah : en supprimant l'attribut checked, il est impossible de réinitialiser le formulaire.
Vous pouvez également étendre l'objet $.fn avec de nouvelles méthodes :
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").attr("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").removeAttr("checked");
}
});
}(jQuery));
Alors tu peux juste faire :
$(":checkbox").check();
$(":checkbox").uncheck();
Vous pouvez aussi leur donner des noms plus uniques comme mycheck() et myuncheck() au cas où vous utiliseriez une autre bibliothèque qui utilise ces noms.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Une question plus spécifique (et très utile !), "Comment vérifier un élément dans une boîte à cocher par valeur ?", je pense que nous pouvons également en discuter ici, et j'ai posté une réponse ci-dessous.
0 votes
Vérifiez d'autres façons de faire cela en utilisant jQuery ici stackoverflow.com/a/22019103/1868660
0 votes
Si vous avez besoin que l'événement onchange soit déclenché, il s'agit de
$("#mycheckbox").click();
0 votes
"Cocher quelque chose" suggère de le tester, donc je pense que "Faire cocher une case" est un titre plus clair et meilleur.
0 votes
Prop() ; est la réponse parfaite. Voir la définition de la fonction - api.jquery.com/prop
0 votes
Attr() ne fonctionne pas avec IE. Utiliser prop() est la meilleure option.
0 votes
$(".myCheckBox").prop("checked", true)