Comment faire pour réinitialiser les composants radiobutton dans jQuery, de sorte qu'aucun n'est cochée
J'ai des boutons radio dans le HTML comme ceci:
<td>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
</td>
C'est dans une balise de formulaire, et lorsque l'utilisateur soumet un formulaire je veux faire tous les boutons de la radio à la valeur par défaut. Sens aucun d'entre eux vérifié.
J'ai ce code mais ça donne un message d'erreur indiquant que [0] is null or not an object
$('input[@name="correctAnswer"]')[0].checked = false;
$('input[@name="correctAnswer"]')[1].checked = false;
$('input[@name="correctAnswer"]')[2].checked = false;
$('input[@name="correctAnswer"]')[3].checked = false;
Je fais cela dans IE 6.
- Si @lambacck réponse ne fonctionne pas pour vous voir le bug tracker sur le JQuery site [bugs.jquery.com/ticket/10910]. Si vous êtes (comme je l'ai été...)en boucle par le biais d'un ensemble de boutons radio pour tenter de les réinitialiser tous les paramètres par défaut de valeurs, la
#(selector).prop('checked',true);
échoue quand il a suivi, en tentant de définir un radio bouton dans le même groupe pour une décoché état. L'astuce est de ne fixer le bouton radio à un contrôle de l'état et de laisser le groupe de boutons radio, faire ce qu'il fait (décochez les autres...). Aussi, l'appel de$(selector).click();
œuvres, et fera feu de tout associer les événements.
Vous devez vous connecter pour publier un commentaire.
Dans les versions de jQuery avant 1.6 utilisation:
Dans les versions de jQuery après 1,6 vous devez utiliser:
mais si vous utilisez 1.6.1+ vous pouvez utiliser la première forme (voir la note 2 ci-dessous).
Note 1: il est important que le deuxième argument, faux et pas "false" depuis "false" n'est pas un falsy valeur. c'est à dire
Note 2: de jQuery 1.6.0, il y a maintenant deux méthodes similaires,
.attr
et.prop
que faire les deux, mais légèrement différente des choses. Si dans ce cas particulier, les conseils fournis ci-dessus fonctionne si vous utilisez 1.6.1+. Le ci-dessus ne fonctionnera pas avec 1.6.0, si vous utilisez 1.6.0, vous devez mettre à niveau. Si vous voulez les détails, continuez à lire.Détails: Lorsque vous travaillez avec des droites, des éléments du DOM HTML, il y a des propriétés attachées à l'élément DOM (
checked
,type
,value
, etc) qui fournissent une interface pour l'état d'exécution de la page HTML. Il y a aussi le.getAttribute
/.setAttribute
interface qui permet d'accéder à l'Attribut HTML valeurs prévues dans le code HTML. Avant de jQuery 1.6 le flou de la distinction en fournissant une méthode,.attr
, d'accéder à deux types de valeurs. jQuery 1.6+ fournit deux méthodes,.attr
et.prop
pour obtenir la distinction entre ces situations..prop
vous permet de définir une propriété sur un élément du DOM, tandis que.attr
permet de définir une valeur de l'attribut HTML. Si vous travaillez avec la plaine DOM et définissez la propriété checked,elem.checked
, àtrue
oufalse
vous modifiez la valeur en cours d'exécution (ce que voit l'utilisateur) et la valeur retournée pistes sur l'état de la page.elem.getAttribute('checked')
, cependant, seulement des retours à l'état initial (et retourne'checked'
ouundefined
en fonction de l'état initial de l'HTML). Dans 1.6.1+ à l'aide de.attr('checked', false)
fait les deuxelem.removeAttribute('checked')
etelem.checked = false
depuis le changement a causé beaucoup de la compatibilité de problèmes et qu'il ne peut pas vraiment dire si tu voulais l'attribut HTML ou le DOM de la propriété. Voir plus d'informations dans la documentation pour .prop."checked"
et paschecked
.La meilleure façon de mettre en radiobuttons état en jquery:
HTML:
Jquery (1.4+) code de pré-sélectionner un bouton :
En Jquery 1.6+ code de la .prop() la méthode est privilégiée :
Pour désélectionner les boutons :
Votre problème est que le sélecteur d'attributs ne commence pas avec un
@
.Essayez ceci:
Enfin, après beaucoup de tests, je pense que le plus pratique et efficace pour le preset:
L'actualisation est nécessaire avec la JQueryUI objet.
Récupération de la valeur, c'est simple :
Testé avec JQuery 1.6.1, JQuery UI 1.8.
Je sais que c'est vieux et que c'est un peu hors sujet, mais en supposant que vous vouliez décochez uniquement des boutons radio dans une collection:
JS:
HTML:
Et si vous faites affaire avec un bouton radio liste, vous pouvez utiliser le :vérifié le sélecteur, pour obtenir celui que vous voulez.
Jeu de bouton Radio contrôlée à l'aide de jquery:
jquery code:
Si vous souhaitez effacer tous les boutons radio dans les DOM:
$('input[type=radio]').prop('checked',false);
Bien que prop changé le statut vérifié, mais le changement montrent également que dans la forme.
Ensemble tous les boutons radio à la valeur par défaut:
Où vous avez:
<input type="radio" name="enddate" value="1" />
Après value= "1" vous pouvez aussi ajouter
unchecked =" false" />
La ligne sera alors:
Pourquoi ne pas vous faire: