Existe-t-il un moyen de vérifier les boutons radio lors de l'ajout dans IE7?
Ce qui semble fonctionner dans tous les navigateurs ne semble pas fonctionner dans IE6,7 malgré la lecture partout que je le fais correctement. Je n'ai absolument aucune idée pourquoi cela ne fonctionne pas.
var $itemVariantRowRadio = $("<input/>")
.attr("type", "radio")
.attr("name", "itemvariant")
.addClass("itemvariant")
.val('whatever');
$itemVariantRowRadio.attr('checked', 'checked');
$itemVariantRow.append($itemVariantRowRadio)
Maintenant, si je fais une console.log($itemVariantRowRadio.attr('checked')
dans IE6/7, alors il dit qu'il est réglé sur VRAI mais la radio n'est pas réellement vérifiée ou décrochée comme vérifiée.
Cauchemar! Quelqu'un d'autre a rencontré cela et a une sorte de solution?
Si dans jQuery> = 1.6:
Utilisez prop
comme ici: . Prop () vs .attr ()
$itemVariantRowRadio.prop('checked', true);
Si dans jQuery <1.6:
$itemVariantRowRadio.attr('checked', true);
AUSSI:
Essayez de créer votre élément comme ceci:
var $itemVariantRowRadio = $("<input/>",{
type: 'radio',
name: 'itemvariant',
class: 'itemvariant',
checked: true,
value: 'whatever'
});
$itemVariantRow.append($itemVariantRowRadio);
Voir violon: http://jsfiddle.net/maniator/6CDf3/
Un exemple avec 2 entrées en annexe: http://jsfiddle.net/maniator/6CDf3/2/
Essayez: $itemVariantRowRadio.not(':checked').click().change();
Vous cochez donc la case comme vous le feriez en tant qu'utilisateur avec la souris. not(':checked')
vous assurera qu'elle n'a pas déjà été vérifiée auparavant. Et déclenchez ensuite l'événement de modification, car jQuery click ne le fait pas lui-même.
MSIE ne vous permet pas de modifier le type
d'un élément input
une fois qu'il a été créé.
Voir http://bugs.jquery.com/ticket/1536 et http://api.jquery.com/jQuery/#jQuery2
Il suffit de le créer ainsi:
$('<input type="radio">')
Vous n'avez pas besoin de déclencher l'événement click si vous appliquez l'attribut vérifié après l'avoir ajouté au dom: http://jsfiddle.net/XjHUe/2/
<div id='content'></div>
var $itemVariantRowRadio = $("<input/>")
.attr("type", "radio")
.attr("name", "itemvariant")
.addClass("itemvariant")
.val('whatever');
//$itemVariantRowRadio.attr("checked", true);
$("#content").append($itemVariantRowRadio);
$(".itemvariant").attr('checked',true);
var val = $(".itemvariant").attr("checked");
alert(val);