Автозаполнение формы в javascript

У меня есть флажок, который вызывает функцию javascript. Когда этот флажок установлен, другие значения в форме заполняются автоматически. Тип этих других значений - это еще один флажок и поле выбора параметра. У меня есть следующее в html:

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

В javascript у меня есть следующее в функции:

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

Я немного смущен тем, почему это не работает. Когда я нажимаю на флажок в форме, флажок под <div id="NA"> устанавливается, но параметр в раскрывающемся списке не изменяется. Идеи?


person de1337ed    schedule 23.07.2012    source источник
comment
Можете ли вы опубликовать что-нибудь в JSBin или JSFiddle? Не совсем понятно, как ваш код соответствует вашей разметке.   -  person Scott Sauyet    schedule 24.07.2012


Ответы (3)


У вас в цикле y++ вместо i++. Попробуй это

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

}

вызов .selectedIndex на options вызывает Cannot set property 'selectedIndex' of undefined

person codingbiz    schedule 23.07.2012

y[i].options.selectedIndex=2;

следует, вероятно, просто прочитать:

y[i].selectedIndex=2;
person Scott Sauyet    schedule 23.07.2012

Я не уверен, что именно вы хотите сделать, но попробуйте следующее:

<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>
person Krasimir    schedule 23.07.2012