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" />
60
demandé sur Erhan Yaşar 2010-08-31 10:57:08

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>
69
répondu jeeves 2011-04-05 18:34:27

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...

29
répondu M.G.Palmer 2017-05-23 11:54:50

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....

11
répondu Lix 2012-05-24 13:06:34

les signaux Radio doivent être placés à l'intérieur d'un formulaire "vérifié" pour pouvoir fonctionner.

7
répondu Michael Seltenreich 2017-01-30 19:21:00

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

5
répondu Codemator 2011-10-19 06:10:39

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?

3
répondu Ben Rowe 2010-08-31 07:02:04

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"/>
1
répondu mentes 2012-01-06 22:22:06

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!....

0
répondu Sudhir 2016-07-08 17:24:45

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.

0
répondu thePanz 2016-11-15 10:49:38

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/>
-1
répondu parhamparsa 2014-01-26 14:22:13

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>
-2
répondu Clément 2010-08-31 07:06:20