142 votes

jQuery set radio button

J'essaie de définir un bouton radio. Je veux le définir en utilisant la valeur ou l'id.

C'est ce que j'ai essayé.

$('input:radio[name=cols]'+" #"+newcol).attr('checked',true);

newcol est l'identifiant du bouton radio.

Peut-être qu'un petit montage s'impose.

Il y a deux ensembles de cases radio, l'un avec des colonnes et l'autre avec des lignes. Je vois donc l'intérêt de ne pas utiliser d'identifiants. C'est ma faute. J'ai donc un exemple :

<input type="radio" name="rows" class="listOfCols" 
   style="width: 50%; " value="Site"></input>

et

<input type="radio" name="cols" class="listOfCols" 
   style="width: 50%; "  value="Site"></input>

avec les identifiants enlevés, et je dois mettre le bon.

5 votes

210voto

Jasper Points 54859

Votre sélecteur recherche le descendant d'un fichier input:radio[name=cols] qui a l'id de newcol (enfin la valeur de cette variable).

Essayez plutôt ceci (puisque vous sélectionnez par ID de toute façon) :

$('#' + newcol).prop('checked',true);

Voici une démo : http://jsfiddle.net/jasper/n8CdM/1/

En outre, depuis jQuery 1.6, la méthode préférée pour modifier une propriété est la suivante .prop() : http://api.jquery.com/prop

5 votes

+1 pour prop vs attr . attr déprécié pour les propriétés et ne fonctionne plus dans jQuery 2.0 ))

97voto

Chococroc Points 3129

J'ai trouvé la réponse ici :
https://web.archive.org/web/20160421163524/http://vijayt.com/Post/Set-RadioButton-value-using-jQuery

Fondamentalement, si vous voulez vérifier un bouton radio, vous DEVEZ passer la valeur sous forme de tableau :

$('input:radio[name=cols]').val(['Site']);
$('input:radio[name=rows]').val(['Site']);

0 votes

Bonjour Ce lien n'a pas de contenu suggéré. Pourquoi continuez-vous à rejeter ma modification pour supprimer le lien ? Il ne contient rien à ce sujet.

0 votes

@MenukaIshan, le point est : Donne le crédit. Le lien est disponible sur web.archive.org, et le gars qui l'a écrit la première fois et de qui je tiens l'idée de la réponse doit recevoir son crédit. Ne supprimez pas le lien, et si vous voulez voir le message original, copiez et collez le lien (je ne sais pas pourquoi il renvoie à l'ancienne page au lieu de web.archive.org).

2 votes

@Chococroc Vous n'avez pas configuré le Markdown de la question correctement. J'ai vu la version de l'archive Web et l'ai liée correctement. Après révision, le lien vers le site sera correct.

16voto

Darin Dimitrov Points 528142

Dans votre sélecteur, vous semblez essayer de récupérer un élément imbriqué de votre bouton radio avec un id donné. Si vous voulez vérifier un bouton radio, vous devez sélectionner ce bouton radio dans le sélecteur et pas autre chose :

$('input:radio[name="cols"]').attr('checked', 'checked');

Cela suppose que vous avez le bouton radio suivant dans votre balisage :

<input type="radio" name="cols" value="1" />

Si votre bouton radio avait un identifiant :

<input type="radio" name="cols" value="1" id="myradio" />

vous pourriez utiliser directement un sélecteur d'id :

$('#myradio').attr('checked', 'checked');

0 votes

S'il y a plusieurs radios avec le cols nom alors $('input:radio[name="cols"]').attr('checked', 'checked'); ne sélectionnera que le dernier. Le code sera exécuté sur chacun d'entre eux, mais à chaque fois que vous définissez le paramètre checked l'élément précédemment défini est désactivé. Voici une démonstration : jsfiddle.net/jasper/n8CdM/2

0 votes

@Jasper, oui, c'est vrai. C'est pourquoi j'ai suggéré d'utiliser un sélecteur d'id.

12voto

punita.gosar Points 135

Vous pouvez essayer le code suivant :

$("input[name=cols][value=" + value + "]").attr('checked', 'checked');

Ceci définira l'attribut coché pour les colonnes radio et la valeur comme spécifié.

2 votes

...the most important concept to remember about the checked attribute is that it does not correspond to the checked property. Source : api.jquery.com/attr

10voto

elclanrs Points 40467

Pourquoi avez-vous besoin 'input:radio[name=cols]' . Je ne connais pas votre html, mais en supposant que les ids sont uniques, vous pouvez simplement faire ceci.

$('#'+newcol).prop('checked', true);

Prograide.com

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.

Powered by:

X