Si tout ce que vous voulez faire est d'avoir une case à cocher qui se coche, ne vous inquiétez pas de le faire avec JQuery. C'est la fonctionnalité par défaut d'une case à cocher sur un clic. Cependant, si vous voulez faire des choses supplémentaires, vous pouvez les ajouter avec JQuery. Avant jQuery 1.9, vous pouvez utiliser $(this).attr('checked');
pour obtenir la valeur au lieu de $(this).attr('checked', true);
, car le deuxième définira la valeur.
Ici se trouve une démonstration fiddle qui montre la fonctionnalité par défaut de la case à cocher par rapport à ce que vous faites avec JQuery.
Note: Après JQuery 1.6, vous devriez utiliser $(this).prop;
au lieu de $(this).attr
dans les trois endroits (merci @Whatevo pour avoir souligné cela et voir ici pour plus de détails).
MISE À JOUR:
Désolé, j'ai raté l'exigence que cela devait être un bouton radio. Vous voudrez peut-être toujours envisager la case à cocher, mais voici le code mis à jour pour la version bouton radio. Cela fonctionne en définissant la valeurPrécédente
comme attribut de la case à cocher, car je ne pense pas que prop
soit pris en charge dans 1.3.2. Vous pourriez également le faire dans une variable locale, car certaines personnes n'aiment pas définir des attributs aléatoires sur des champs. Voici le nouvel exemple.
MISE À JOUR 2:
Comme l'a souligné Josh, la solution précédente ne fonctionnait qu'avec un seul bouton radio. Voici une fonction qui rend un groupe de boutons radios désélectionnables par leur nom, et un fiddle:
var makeRadiosDeselectableByName = function(name){
$('input[name=' + name + ']').click(function() {
if($(this).attr('previousValue') == 'true'){
$(this).attr('checked', false)
} else {
$('input[name=' + name + ']').attr('previousValue', false);
}
$(this).attr('previousValue', $(this).attr('checked'));
});
};
0 votes
Il convient de noter que si vous faites également quelque chose avec cette radio en fonction de son état coché, vous pouvez obtenir des valeurs "coché" trompeuses lors des événements onclick. Une solution consiste à attribuer à la pression de la souris la valeur que vous allez lui attribuer (le contraire de ce qu'elle a) dans une variable sur le nœud comme this.__rval et à vérifier son existence dans votre gestionnaire onclick. S'il existe, vous savez que la valeur qu'il contient est correcte, bien que this.checked puisse être sur le point de changer.