option шире select'a + выбор данных
Дано: форма с ограничением по ширине.
Чтобы можно было без проблем пользоваться select'ами, использован вот этот хак: http://www.hedgerwow.com/360/dhtml/u...th/bk/demo.php Все работает. НО: используется еще скрипт автоподстановки данных (javascript: кликаешь на кнопку - она автоматом подставляет данные в форму, в том числе выбирает нужный option в select'е). Код: <script language="JavaScript" src="/includes/dropdown_menu_hack.js"></script> <script type="text/javascript"> function InsCtn(Params){ var response = Params.split("|"); document.getElementById("City"+response[0]).options[response[1]].selected=true } </script> И в странице: <select name="City1" id="City1" style="width: 100; behavior:expression(window.dropdown_menu_hack!=null?window.dropdown_menu_hack(this):0);"> <option value="1">Город1 <option value="2">Город2 <option value="3">Город3 ... <option value="n">ГородN </select> <input type="button" name="NewAddContacts1" value="Вставить данные в select" style="width:70" onClick="InsCtn('1|3')"> При клике на button в select'e должен выбираться город3. Так вот, в ИЕ все это художество не работает. А в Опере и ФФ - без проблем. Так как с JavaScript'ом я слаб, прошу помощи. Либо помогите решить проблему с ИЕ, либо посоветуйте другой способ раздвинуть option'ы, не меняя ширины select'a. И чтобы можно было вышеуказанным скриптом подставлять значения. |
>> При клике на button в select'e должен выбираться город3.
Да ладно! У "Город3" опция имеет индекс 2, он никак не может быть выбран. Ни в FF, ни в Опере ни в IE. Во всех браузерах скрипт работает нормально. Но лучше BOM не использовать, а использовать DOM (при выставлении checked вроде глюков нет, а вот при изменении|добавлении опций могут быть проблемы) |
Прошу прощения, наврал в коде, когда его упрощал для форума.
Действительно, Город3 не выберется. Выберется Город4. А скрипт и правда работает 0_о Ничего не понимаю... Правда, теперь постоянная неопознанная ошибка вылетает. Буду искать. |
Я вообще ничего не понимаю.
Два компа: настольный/Win2003/IE6 и ноут/XP/IE6. Лежит все на ноуте, на нем же поднята веб-служба (не знаю, надо ли это, но тем не менее). Пробую на настольном. При загрузке страницы выскакивает "Неопределенная ошибка". Подстановка значений работает. На ноуте при загрузке - тишина, но при попытке подставить значения - ошибка "document.getElementById(...).options(...) - есть null или не является объектом". Убейте меня... Кстати, я в первом посте писал "с JavaScript'ом я слаб", потому прошу пояснить - как сделать не BOM, а DOM. Изменение и добавление option'ов мне не нужно - только selected. |
Еще одно наблюдение.
На ноуте все, как описано выше. На настольном если все закрыть, а потом зайти на страницу - ошибка, как на ноуте. F5 - ошибка, как описано выше про настольный. |
SARD,
таг <option> надо закрывать </option>'ом function InsCtn(Params){ var response = Params.split("|"); var cN = document.getElementById('City'+response[0]).childNodes var l = cN.length for( var i=0; i<l; i++){ if( !!cN[i].selected ) cN[i].selected = false } cN[response[1]].selected = true } |
Закрыл option'ы. Толку ноль.
Вставил код вместо своего. На ноуте-ХР-IE6 заргужается без ошибок, на настольном-2003-IE6 ругается на неопределенную ошибку. При попытке клацнуть на кнопку (везде) - ругается "Объект не поддерживает это свойство или метод" на строку, в которой "cN[response[1]].selected = true". *здесь_должен_быть_бьющийся _башкой_об_стену_смайл* |
Мой огород можно существенно упростить
function InsCtn(Params){ var response = Params.split("|"); document.getElementById('City'+response[0]).selectedIndex = response[1] } |
Все равно не работает.
На ноуте-ХР-IE6 заргужается без ошибок, на настольном-2003-IE6 ругается на неопределенную ошибку. При клике на кнопку: на ноуте приключается белый пустой select, после F5 в нем встает не то (почему-то) значение, после еще одного F5 - первый option. на настольном - выбирается нужный option, после любого количества F5 он же и остается выбранным. |
мОЖНО И подругому:
<script type="text/javascript"> function InsCtn() { var valuer=3; // Задание value City1.value = valuer; } </script> И в странице: <select name="City1" id="City1" style="width: 100; behavior:expression(window.dropdown_menu_hack!=null?window.dropdown_menu_hack(this):0);"> > <option value="1">Город1 <option value="2">Город2 <option value="3">Город3 <option value="4">Город4 <option value="5">Город5 </select> <input type="button" style="width:200; name="NewAddContacts1" value="Вставить данные в select" style="width:70" onClick="InsCtn();"> |
Часовой пояс GMT +3, время: 20:31. |