URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 4362
[ Назад ]

Исходное сообщение
"select, selectedIndex и IE"

Отправлено MAK , 19-Сен-06 19:44 
Добрый день. Сегодня столкнулся с очень интересной проблемой.
если список (<select>), при onChange вызывается функция для генерирования второго списка из массива. В эту же функцию передается текущий элемент. Необходимо "выставить" выбранный элемент после отправки формы (метод - post). Firefox, Opera все делают, а вот Explorer отказывается (хотя списки прогружает). В чем может быть проблема?
-[ исходник ]-------------------------------------
function ChangeHouse(ctl, d, curd)
{
    // ctl - элемент, на котором "ловим" onChange
    // d   - элемент, куда надо "прогрузить" новый список
    // curd - текущий/выбранный элемент
    var node;
    var frm = document.forms[0];
    var doorways = [0, 5, 5, 5, 4, 3, 3, 4];
    // количество элементов совпадает с количеством option'ов в ctl

    while (d.childNodes.length > 0)
        d.removeChild(d.childNodes[0]);

    node = document.createElement("option");
    node.value = 0;
    node.appendChild(document.createTextNode("№"));
    d.appendChild(node);

    if (ctl.selectedIndex > 0)
    {
        var cd = doorways[ctl.selectedIndex];

        for (var i = 1; i <= cd; i++)
        {
            node = document.createElement("option");
            node.value = i;
            node.appendChild(document.createTextNode(i));

            d.appendChild(node);
        }

        d.selectedIndex = curd;
    }
}
...

<select name="house" onChange="ChangeHouse(this, this.form.doorway, 0);">
    <option value="0" selected>№</option>
    <!-- здесь идут дома -->
</select>
<select name="doorway" class="short">
    <option value="0" selected>№</option>
</select>
...
window.onload = ChangeHouse(document.forms[0].house, document.forms[0].doorway, 3);


Содержание

Сообщения в этом обсуждении
"select, selectedIndex и IE"
Отправлено XAnder , 21-Сен-06 09:48 
>window.onload = ChangeHouse(document.forms[0].house, document.forms[0].doorway, 3);

Попробуйте так:

document.body.onload = "ChangeHouse(document.forms[0].house, document.forms[0].doorway, 3)";


"select, selectedIndex и IE"
Отправлено MAK , 21-Сен-06 17:32 
>>window.onload = ChangeHouse(document.forms[0].house, document.forms[0].doorway, 3);
>
>Попробуйте так:
>
>document.body.onload = "ChangeHouse(document.forms[0].house, document.forms[0].doorway, 3)";


не хочет :-\

единственное что придумал это в функциях перед ctl.selectedIndex=y ставить ctl.focus()


"select, selectedIndex и IE"
Отправлено Lena , 27-Апр-07 17:36 

>единственное что придумал это в функциях перед ctl.selectedIndex=y ставить ctl.focus()

Спасибо! Очень помогло.