2012-07-23 6 views
1

J'ai une case à cocher qui appelle une fonction javascript. Lorsque cette case est cochée, les autres valeurs d'un formulaire sont remplies automatiquement. Le type de ces autres valeurs est une autre case à cocher et un champ de sélection d'option. Je donne les résultats suivants en html:Remplissage automatique du formulaire en javascript

<div id="NA" > 
<input type="checkbox" name="remove_cd" value="r_on" id="r_on_cd" />N/A: 
<select name="reason" id="reason_list"> 
<option value="1">Option 1</option> 
<option value="2">Option 2</option> 
<option value="3">Option 3</option> 
</select> 
<font color="#cc0000">Reason Required</font><hr/></div> 

En javascript, je donne les résultats suivants en fonction:

... 
var y = document.getElementById("NA").children; 
for(var i=0; i<y.length; y++){ 
    y[i].checked=true; 
    y[i].options.selectedIndex=2; 
} 
... 

Je suis un peu confus pour expliquer pourquoi cela ne fonctionne pas. Lorsque je clique sur une case à cocher dans le formulaire, la case à cocher sous le <div id="NA"> est vérifiée, mais l'option dans la liste déroulante ne change pas. Des idées?

+0

Pouvez-vous poster quelque chose à JSBin ou jsFiddle? Il n'est pas tout à fait clair comment votre code correspond à votre balisage. –

Répondre

2

Vous avez y++ au lieu de i++ dans votre boucle. Essayez cette

for(var i=0; i<y.length; i++){ 
    y[i].checked=true; 
    y[i].selectedIndex=2; 

} 

appelant .selectedIndex sur options lance Cannot set property 'selectedIndex' of undefined

+1

Wow, je me sens comme un idiot. Merci quand même. Je suis fatigué. – de1337ed

0
y[i].options.selectedIndex=2; 

devrait probablement lire:

y[i].selectedIndex=2; 
+0

Essayé cela aussi, n'a pas fonctionné – de1337ed

0

Je ne sais pas exactement ce que vous voulez faire, mais essayez ceci:

<div id="NA" > 
<input type="checkbox" name="remove_cd" value="r_on" id="r_on_cd" />N/A: 
<select name="reason" id="reason_list"> 
<option value="1">Option 1</option> 
<option value="2">Option 2</option> 
<option value="3">Option 3</option> 
</select> 
<font color="#cc0000">Reason Required</font><hr/></div> 
<script> 
    window.onload = function() { 
     var y = document.getElementById("NA").children; // it's not a good idea to use children array, because if you add a new element in the begining your script will fail 
     var checkbox = y[0]; // it is better here to use: document.getElementById('r_on_cd'); 
     var select = y[1]; // it is better here to use: document.getElementById('reason_list'); 
     checkbox.onclick = function() { 
      select.options.selectedIndex = 2; 
     }; 
    } 
</script> 
Questions connexes