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.
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
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']);
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');
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.
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);
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.
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 )
Puisque newcol
est l’ID du bouton radio, vous pouvez simplement l’utiliser comme indiqué ci-dessous.
$("#"+newcol).attr('checked',true);
Combinaison des réponses précédentes:
$('input[name="cols"]').filter("[value='Site']").click();
Vous pouvez simplement utiliser:
$("input[name='cols']").click();
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();