web-dev-qa-db-fra.com

bouton d'option jQuery set

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'id du bouton radio.

Peut-être qu'une petite modification est en ordre.

Il y a deux ensembles de boîtiers radio, l'un avec les colonnes et l'autre avec les lignes. Je vois donc l'intérêt de ne pas utiliser d'identifiant. Ma faute. J'ai donc comme 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 l'identifiant est supprimé, et je dois définir le bon.

126
mike628

Votre sélecteur recherche le descendant d'un élément input:radio[name=cols] dont l'identifiant est newcol (ainsi que la valeur de cette variable).

Essayez plutôt ceci (puisque vous sélectionnez quand même par ID):

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

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

De plus, à partir de jQuery 1.6, la méthode indiquée pour modifier une propriété est .prop(): http://api.jquery.com/prop

193
Jasper

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

En gros, si vous voulez cocher un bouton radio, vous DEVEZ passer la valeur sous forme de tableau:

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

Dans votre sélecteur, vous semblez essayer de récupérer un élément imbriqué de votre bouton radio avec un identifiant donné. Si vous souhaitez 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 pouvez directement utiliser un sélecteur d'identifiant:

$('#myradio').attr('checked', 'checked');
15
Darin Dimitrov

Vous pouvez essayer le code suivant:

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

Cela définira l'attribut vérifié pour les colonnes radio et la valeur spécifiée.

11
punita.gosar

Pourquoi avez-vous besoin de 'input:radio[name=cols]'. Je ne connais pas votre code HTML, mais en supposant que les identifiants sont uniques, vous pouvez simplement le faire.

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

Essaye ça:

$("#" + newcol).attr("checked", "checked");

J'ai eu des problèmes avec attr("checked", true), j'ai donc tendance à utiliser les solutions ci-dessus.

De plus, si vous avez l'ID, vous n'avez pas besoin d'autres éléments pour la sélection. Un identifiant est unique.

6
The Awnry Bear

L'utilisation de .filter() fonctionne également et est flexible pour l'id, la valeur, le nom:

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

(vu sur ce blog )

2
dhc

Puisque newcol est l’ID du bouton radio, vous pouvez simplement l’utiliser comme indiqué ci-dessous.

$("#"+newcol).attr('checked',true);
2

Combinaison des réponses précédentes:

$('input[name="cols"]').filter("[value='Site']").click();
2
Graham Laight

Vous pouvez simplement utiliser:

$("input[name='cols']").click();
0
Markoj

La réponse choisie fonctionne dans ce cas.

Mais la question portait sur la recherche de l'élément sur la base d'un radiogroupe et d'un identifiant dynamique. La réponse peut également laisser le bouton radio affiché non affecté.

Cette ligne sélectionne exactement ce qui a été demandé tout en affichant le changement à l'écran.

$('input:radio[name=cols][id='+ newcol +']').click();
0
me_