Boutons Radio Attribut" Coché " Ne Fonctionne Pas
le bouton radio ne s'affiche pas comme checked
par défaut. J'ai commencé sans choix par défaut en faisant une validation js très simple et ça ne marchait pas. J'ai donc choisi d'utiliser les valeurs par défaut jusqu'à ce que je m'en rende compte et découvre que quelque chose de bizarre se passe.
le markup est valide et j'ai essayé en FF, Safari et Chrome. Rien ne fonctionne.
je pense que c'est un conflit avec la bibliothèque jQuery
parce que le problème s'en va quand j'enlève le script d'appel.
<label>Do you want to accept American Express?</label> Yes
<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1' /> No
<input style="width: 20px;" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked" />
11 réponses
si vous avez plusieurs du même nom avec l'attribut coché il prendra la dernière radio cochée sur la page.
<form>
<label>Do you want to accept American Express?</label>
Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" />
maybe<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" checked="checked" />
No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" />
</form>
C'est peut-être ça:
y a-t-il un bug avec des boutons radio dans jQuery 1.9.1?
en bref: N'utilisez pas attr() mais prop() pour vérifier les boutons radio. Dieu que je déteste JS...
l'ultime solution JavaScript à ce problème ennuyeux -
enveloppez simplement la commande jQuery dans un setTimeout
. L'intervalle peut être extrêmement petit, j'utilise 10
millisecondes et il semble fonctionner parfaitement. Le délai est si court qu'il est pratiquement indétectable pour les utilisateurs finaux.
setTimeout(function(){
$("#radio-element").attr('checked','checked');
},10);
Cela permettra également de travailler avec des
-
$("#radio-element").trigger('click');
-
$("#radio-element").attr('checked',true);
-
$("#radio-element").attr('checked',ANYTHING_THAT_IS_NOT_FALSE);
Hacky...hacky...hacky...hacky... Oui, je sais... c'est donc une solution de contournement....
les signaux Radio doivent être placés à l'intérieur d'un formulaire "vérifié" pour pouvoir fonctionner.
Hey j'étais également confronté à un problème similaire, dans une page générée par ajax.. J'ai vérifié toutes les entrées dans le formulaire et j'ai découvert qu'il y avait une autre case à cocher dans un div caché(display:none) avec le même ID, Une fois que j'ai changé l'id de la deuxième case à cocher, il a commencé à fonctionner.. Vous pouvez aussi essayer qui.. et laissez-moi savoir la suite.. cheers
vient de copier votre code dans: http://jsfiddle.net/fY4F9/
No est coché par défaut. Avez-vous du javascript qui pourrait affecter la boîte radio?
Salut je pense que si vous mettez l'attribut id pour la deuxième entrée et lui donner une valeur id unique il fonctionnera
<label>Do you want to accept American Express?</label>
Yes<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1'/>
No<input style="width: 20px;" id="amex0" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked"/>
voici une explication détaillée de la propriété contrôlée vs L'attribut entrez la description du lien ici
cela pourrait être utile à quelqu'un, Voici une autre façon de récupérer la valeur du bouton radio sélectionné
var accepted = $('input[name="Contact0_AmericanExpress"]:checked').val();
paramétrer id aux boutons radio est facultatif ici.
bon codage!....
votre code est bon, essayez de déboguer votre script JQuery pour trouver le problème! Si vous utilisez FF, vous pouvez installer une extension à debug JS (et JQuery) appelée FireBug.
il suffit d'ajouter l'attribut vérifié à chaque radio que vous voulez faire vérifier par défaut
essayez ceci:
<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked/>
vous utilisez un code xhtml non standard (les valeurs doivent être encadrées avec des guillemets doubles, pas des guillemets simples)
essayez ceci:
<form>
<label>Do you want to accept American Express?</label>
Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" />
No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" />
</form>