Страницы: 1
Проблема следующая. Есть JS, который вызывается при событии onFocus, очищает элемент select и заполняет его новыми данными. При повторном вызове loadItems(id,name) хотелось бы сохранить предыдущий выбор пользователя (var selText) и выбрать соответствующий <option>. Однако, при очищении списка select и создании нового option с указанием для нужного атрибута "selected", когда открываешь список, выбор меняется на первый элемент. Точнее в самом выпадающем списке элемент выбирается, а в строке выбранного элемента подставляется первый элемент. Неприятный факт.
Пример немного надуманный, там заглушки вместо динамически подгружаемого массива, но для демонстрации ошибки его хватает.
<script language="JavaScript"> function addOption (oListbox, text, value, isDefaultSelected, isSelected) { var oOption = document.createElement("option"); oOption.appendChild(document.createTextNode(text)); oOption.setAttribute("value", value); if (isDefaultSelected) oOption.defaultSelected = true; if (isSelected) oOption.selected = true; oListbox.appendChild(oOption); } function clearSelect(oListbox) { for (var i=oListbox.options.length-1; i >= 0; i--) { oListbox.remove(i); } }; function loadItems(id,name) { var items=["1st","2nd","3th","4"] var objSel = document.getElementById(id); var selText=""; if ( objSel.selectedIndex != -1) { //Если есть выбранный элемент, запоминаем его selText=objSel.options[objSel.selectedIndex].text; } var flag=false; //objSel.options.length = 0; clearSelect(objSel); addOption (objSel,"-- НЕТ --","-- НЕТ --",false,false); var i=0; for (i=0; i<items.length; i++) { if (items[i]===selText) flag=true; else flag=false; //objSel.options[i]=new Option(result["proc"][i],result["proc"][i],flag,flag); addOption (objSel,items[i],items[i],flag,flag); } } </script> <form name="myForm" action="./" method="post"> <br/>Процессор:<br/> <select size=1 id="procId" name="proc" onFocus="javascript:loadItems('procId','proc')"> <option>-- НЕТ --</option> <option>Проц1</option> <option>Проц2</option> </select> </form>
В IE8.0 и Opere 10 данной проблемы нет. Закомментаренный строки кода - тоже эффекта не дают.
p.s. Забыл сказать, для проявления эффекта необходимо, чтобы элемент select потерял фокус (щёлкнуть по свободному месту)
Отредактировано Jazzy.em (28-10-2009 16:36:52)
Отсутствует
Тема перенесена из форума «Поддержка пользователей» в форум «Разработка».
Do you feel lucky, punk?
Отсутствует
Страницы: 1