2010-06-23 7 views
0

J'ai un tableau javascript contenant le nom et les valeurs des radios que je veux vérifier.jQuery ciblant le bouton radio correct ne répond pas

jQuery(window).load(function(){ 

var selected_options = new Array(); 
selected_options['swing_type'] = 'Slide'; 

    var x; 
    for (x in selected_options){ 
     jQuery("#menu input[name="+ x +"][value="+ selected_options[x] +"]").attr('checked', 'checked'); 
    } 
}); 

Et le html a quelque chose comme:

<td> 
    <input type="radio" id="swing" name="swing_type" value="Swing" /><label for="swing"> Swing</label><br /> 

    <input type="radio" id="slide" name="swing_type" value="Slide" /><label for="slide"> Slide</label> 
    </td> 

Quand je lance ce script, le navigateur ne répond plus. J'ai essayé quelques variations, les deux ont travaillé suivant:

jQuery("#menu input[value="+ selected_options[x] +"]").attr('checked', 'checked'); 
jQuery("#menu input[name=swing_type][value=Swing]").attr('checked', 'checked'); 

Ce qui suit ne fonctionne pas:

jQuery("#menu input[name=swing_type][value="+ selected_options[x] +"]").attr('checked', 'checked'); 

J'espère que quelqu'un peut me éclairer à ce qui est faux. Je veux cibler les bonnes entrées radio. Si je ne cible que les valeurs, je pourrais voir un cas où il pourrait y avoir deux ensembles distincts avec des valeurs Oui/Non. Merci.

Répondre

2

Vous effectuez une opération for/in sur un ensemble. Cela peut parfois causer des problèmes.

Puisque vous spécifiez les clés nommées, vous devez utiliser un objet à la place:

var selected_options = {}; 

ou

var selected_options = new Object(); 

Test de l'exemple:http://jsfiddle.net/Ds3s8/

+0

Je vais faire un essai Merci. – dardub

+0

Wow merci, je viens de changer un mot et cela a résolu le problème. – dardub

+0

@dardub - Génial! Content que ça a marché! : o) – user113716