Форум → Программирование → JavaScript → Трабла с ИЕ + SELECT + AJAX
Трабла с ИЕ + SELECT + AJAX
-
На сайте организовано меню на АЯКСе, использую библиотеку JsHttpRequest.
Вот сайт http://auto.uniwebs.ru/
Когда заходишь с FireFox, Opera, Safari - Все ништяк работает, выбираешь "Грузовые автомобили", выпадает список в соседнем селекте!
Но блин ИЕ как всегда… все засрет… Заходим с ИЕ и ничерта не работает это меню!
Внимание: Не пугайтесь нижней консоли (если заходишь не с ФФ! И в опере он открывается не корректно) - это "FireBug Lite". + из-за него ошибка одна в валидации, но это не суть.
1. Проверил JsHttpRequest - он данные отправляет и принимает! + пробовал alert(), все работает, данные приходят!
2. Вместо SELECT использовал DIV и все получилось, данные туда вставляються! А в СЕЛЕКТ - НЕТ!
Верстка - валидна, JS - нет ошибок.
Что это может быть такое с ИЕ? или с селектом?https://smappi.org/ - платформа по созданию API на все случаи жизни -
-
19 декабря 2007 г. 9:33, спустя 23 минуты 30 секунд
как ты вставляешь в селект?
использую SELECT как блок<select name="year_2" id="year_2" style="width: 54px;">
<option selected="true" value="2007">2007</option>
<option value="2006">2006</option>
</select>
беру и по ид заменяю содержимое, то есть блок:
<option selected="true" value="2007">2007</option>
<option value="2006">2006</option>
таким образом: document.getElementById(имя_ид).innerHTML = то_что_вернул_бакенд;https://smappi.org/ - платформа по созданию API на все случаи жизни -
19 декабря 2007 г. 9:42, спустя 9 минут 36 секунд
на сколько мне известно, в select надо вставлять так:
var List = document.forms["FORM_NAME"].elements["SELECT_NAME"];
var newOption = document.createElement("OPTION");
newOption.text = 'name';
newOption.value = 'value';
// тут мы используем для добавления элемента либо метод IE, либо DOM
(List.options.add) ? List.options.add(newOption) : List.add(newOption, null);
т.е. надо создавать элементы <option>
вобщем, гуру js ща помогут…все умрут, а я изумруд -
19 декабря 2007 г. 9:43, спустя 46 секунд
ps. не знал, что select можно использовать "как блок"все умрут, а я изумруд -
19 декабря 2007 г. 10:37, спустя 54 минуты 25 секунд
md5 спасибо большое, конечно сложноватое решение, подожду vasa_c :)https://smappi.org/ - платформа по созданию API на все случаи жизни -
19 декабря 2007 г. 10:41, спустя 4 минуты
По сути md5 предложил правильный подход. Но на самом деле все еще проще, можно обойтись без DOM:
document.forms["FORM_NAME"].elements["SELECT_NAME"].options - это просто массив. Ну и работай с ним как с массивом.
document.forms["FORM_NAME"].elements["SELECT_NAME"].options.text - содержимое конкретнеого <option>
document.forms["FORM_NAME"].elements["SELECT_NAME"].options.value - аттрибут value конкретнеого <option>
Будет работать везде. -
19 декабря 2007 г. 11:28, спустя 46 минут 27 секунд
По сути md5 предложил правильный подход. Но на самом деле все еще проще, можно обойтись без DOM:
document.forms["FORM_NAME"].elements["SELECT_NAME"].options - это просто массив. Ну и работай с ним как с массивом.
document.forms["FORM_NAME"].elements["SELECT_NAME"].options.text - содержимое конкретнеого <option>
document.forms["FORM_NAME"].elements["SELECT_NAME"].options.value - аттрибут value конкретнеого <option>
Будет работать везде.
спасиб, так удобнее и яснее :)https://smappi.org/ - платформа по созданию API на все случаи жизни -
19 декабря 2007 г. 11:31, спустя 3 минуты 20 секунд
подожду vasa_c
:)))
ничего нового сказать не могу.
innerHTML в IE далеко не везде правильно работает на запись.
Поэтому вместо него приходится использовать DOM.
Либо современные уровни, как у md5.
Либо несколько устаревшие, как у AlexB.
+ Интерфейс HTMLSelectElement -
19 декабря 2007 г. 11:52, спустя 20 минут 57 секунд
vasa_c, тест
=) добавил стрелочку вниз дабы вставлять имя юзера в форму ответа, сори за флейм =)
почему раньше не сделали?все умрут, а я изумруд -
19 декабря 2007 г. 11:54, спустя 1 минуту 58 секунд
Всем спасибо :)
P.S. vasa_c спасибо за ссылку :)https://smappi.org/ - платформа по созданию API на все случаи жизни -
19 декабря 2007 г. 11:55, спустя 38 секунд
vasa_c, тест
=) добавил стрелочку вниз дабы вставлять имя юзера в форму ответа, сори за флейм =)
почему раньше не сделали?
удобно :)
тока вставлятся не нынешний, никнейм а который был при регистрации :(
т.е. вставляется ad3000 а надо adw0rdhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
-
6 января 2008 г. 15:29, спустя 18 дней 3 часа 31 минуту
Кстати, сделал как посоветовал md5!
Получал JSON запись из бекенда, потом его евалил в объект, очищал селект при помощи innerHTML, и добавлял туда новые записи как посоветовал md5.
Но код на стороне клиента разросся, поэтому переделал по старинке - с использованием дивов :)https://smappi.org/ - платформа по созданию API на все случаи жизни
Пожалуйста, авторизуйтесь, чтобы написать комментарий!