Jump to content
  • 0

Пошаговый мультиселект не работает в IE6


BassEast
 Share

Question

Привет.

На этой странице http://theraflu-promo.ru/ в FireFox к примеру можно проверить работу скрипта, выбрав город и ВУЗ — нас перекидывает на определённую страницу.

В IE6 эта фича не работает, то есть, как только я выбрал город, он не собирается мне показывать селект с ВУЗами, а сразу выкидывает от первого значения ВУЗа location.href

Помогите разобраться.. пожалуйста.

Link to comment
Share on other sites

24 answers to this question

Recommended Posts

  • 0

В Опере такой же косяк судя по всему все дело в событие onchange

я бы попробовал обмануть, взял бы див и уже в него аяксом загружал селект целиком а не только оптионс

Edited by stars
Link to comment
Share on other sites

  • 0
В Опере такой же косяк судя по всему все дело в событие onchange

я бы попробовал обмануть, взял бы див и уже в него аяксом загружал селект целиком а не только оптионс

Я не столь силён в js... мне бы этот баг поправить.

Link to comment
Share on other sites

  • 0

Алерты спасут вас. Предлагаю на onchange проверить что выдаст (selectedIndex, срабатывает ли условие).

Зачем принудительно вызывать change на втором списке?

$('#'+child).trigger("change");

Link to comment
Share on other sites

  • 0
Алерты спасут вас. Предлагаю на onchange проверить что выдаст (selectedIndex, срабатывает ли условие).

А что в alert() записать?..

Зачем принудительно вызывать change на втором списке?

$('#'+child).trigger("change");

Убрал этот change, стало лучше кстати, но если выбрать город, он показывает первый ВУЗ из списка, а не "Выбрать ВУЗ".

Edited by BassEast
Link to comment
Share on other sites

  • 0

Эх, заставили таки запустить ИЕ ;)

Убрал этот change, стало лучше кстати, но если выбрать город, он выбирает первый ВУЗ из списка, но не "Выбрать ВУЗ".

Ну дык пропишите для пункта "Выбрать ВУЗ" selected="selected".

А что в alert() записать?..

<select id="child" style="display:none;" onChange="alert(this.selectedIndex); if (this.selectedIndex > 0) { alert('ok'); }">

Как-то так я бы проверял.

P.S. Терафлю не помогает нифига :)

P.P.S. Можно еще так попробовать:

if(isSubselectOptional) {
var ch = $('#'+child);
ch.prepend('<option value="none" selected="selected">Выбрать ВУЗ</option>');
ch.selectedIndex = 0;
}

Link to comment
Share on other sites

  • 0

А я бы вообще отказался от JQ, и замутил бы всё на чистом JS, сделав двумерный массив с адресами учреждений. Потом бы на фоне него уже возможно даже фабрично создал бы все селекты, а адреса сами запихнул бы в значение value;. Далее по событию onchange ссылался бы на selectedIndex - value;

Great Rash идея говно?

P.S. Терафлю не помогает нифига ;)

Какое Терафлю?)

Link to comment
Share on other sites

  • 0
А я бы вообще отказался от JQ, и замутил бы всё на чистом JS, сделав двумерный массив с адресами учреждений. Потом бы на фоне него уже возможно даже фабрично создал бы все селекты, а адреса сами запихнул бы в значение value;. Далее по событию onchange ссылался бы на selectedIndex - value;

Great Rash идея говно?

Я не могу врубиться в идею... голова не варит. И по тексту я плохо информацию воспринимаю, потому и книги умные не читаю почти - не доходит даже со второго раза :)\

P.S. А че нормальная идея (три раза прочитал не поленился :) )

Какое Терафлю?)

Лекарство такое по типу колдрекса. Тока там сыпучей этой фигни побольше в пакетике ;)

P.P.S. Колдрекс, кстати, тоже не помогает нифига...

Link to comment
Share on other sites

  • 0
потому и книги умные не читаю почти - не доходит даже со второго раза :)

Могу тебя утешить, ты, как минимум не один такой. Я книги читать пытаюсь, но мне пока не объяснишь на пальцах сто раз одно и то-же, так-же не пойму нихера)) :)

Насчёт идеи, чуть позже накидаю вариант, в течении двух часов где-то.

Лекарство такое по типу колдрекса. Тока там сыпучей этой фигни побольше в пакетике ;)

P.P.S. Колдрекс, кстати, тоже не помогает нифига...

Ааа, ты про лекарство что-ли) Ну его то я знаю. А у тя чё, горло болит чтоли или приболел камрад? :)

Link to comment
Share on other sites

  • 0
Эх, заставили таки запустить ИЕ ;)

Ну дык пропишите для пункта "Выбрать ВУЗ" selected="selected".

<select id="child" style="display:none;" onChange="alert(this.selectedIndex); if (this.selectedIndex > 0) { alert('ok'); }">

Как-то так я бы проверял.

P.P.S. Можно еще так попробовать:

if(isSubselectOptional) {
var ch = $('#'+child);
ch.prepend('<option value="none" selected="selected">Выбрать ВУЗ</option>');
ch.selectedIndex = 0;
}

Прошу прощения, что заставил IE6 запустить :) я понимаю, как это по нервам бьёт..

Проделал один в один, правда почему-то selected="selected" игнорируется... т.е. всё так же по умолчанию первый ВУЗ в селекте.

Алерты вроде бы всё правильно выводят.

Edited by BassEast
Link to comment
Share on other sites

  • 0

ИЕ8, но по нервам бьет все равно ;)

Хм, наверное надо попробовать установить selectedIndex после того как мы показываем второй select, т.е. как-то так:

if(isSubselectOptional) {
var ch = $('#'+child);
ch.prepend('<option value="none" selected="selected">Выбрать ВУЗ</option>');
ch.show();
ch.selectedIndex = 0;
}

а это закомментировать/удалить пока:

if(isSubselectOptional) $('#child').show();

а то 2 одинаковых условия получается

А у тя чё, горло болит чтоли или приболел камрад?

Угу, уже неделю как болею... впервые в жизни болею на работе - превратился в трудоголика :) сам себе противен

UPD: По крайней мере из консоли у меня получилось установить первый элемент списка. Все дело, походу, в том, что пока у элемента display: none; с ним ИЕ вообще работать не хочет... а там хз...

Link to comment
Share on other sites

  • 0
ИЕ8, но по нервам бьет все равно ;)

Хм, наверное надо попробовать установить selectedIndex после того как мы показываем второй select, т.е. как-то так:

if(isSubselectOptional) {
var ch = $('#'+child);
ch.prepend('<option value="none" selected="selected">Выбрать ВУЗ</option>');
ch.show();
ch.selectedIndex = 0;
}

а это закомментировать/удалить пока:

if(isSubselectOptional) $('#child').show();

а то 2 одинаковых условия получается

Сейчас видно, что "Выбрать ВУЗ" вставляется, но первое значение сразу же его затирает..

UPD: По крайней мере из консоли у меня получилось установить первый элемент списка. Все дело, походу, в том, что пока у элемента display: none; с ним ИЕ вообще работать не хочет... а там хз...

Хм.. т.е. в данном случае у скрытого select'a?

Edited by BassEast
Link to comment
Share on other sites

  • 0
У меня теперь для Москвы работает, а для остальных городов нет или так и должно быть?

Нет, это я просто попробовал жёстко в селект вписать: <option class="sub_1" value="none" selected="selected">Выбрать ВУЗ</option> подставив класс (sub_1) для Москвы... но от этого не лучше, т.к. появляется 2 значения "Выбрать ВУЗ") блин..

Edited by BassEast
Link to comment
Share on other sites

  • 0

Поднял у себя локально вашу страничку, ща поэкспериментируем.

UPD: Вот я чудила! Это ж jQuery долбаный!

if (isSubselectOptional) {
var ch = $('#' + child);
ch.prepend('<option value="none" selected="selected">Выбрать ВУЗ</option>');
ch.show();
ch.each(function() {
this.selectedIndex = 0;
});
}

Link to comment
Share on other sites

  • 0

Да мужики, успокойтесь вы, харош парится, пора перекусить. Добрый дядя psywalker вам приготовил завтрак. ;)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Селекты - Вузы</title>
<style type="text/css">
*{ margin: 0; padding: 0;}
select { float: left; margin-right: 30px;}
</style>
</head>

<body>
<div id="wrap">
<select onchange="creat()" id="sel1">
<option value="">Выбрать город</option>
<option value="1">Москва</option>
<option value="2">Питер</option>
<option value="3">Самара</option>
</select>
<select onchange="selector()" id="sel2">
<option value="">Выбрать Свойство</option>
</select>
</div>
<script type="text/javascript">
var selected1 = document.getElementById('sel1');
var selected2 = document.getElementById('sel2');
var div = document.getElementById('wrap');
var op = selected1.options;
var op2 = selected2.options;
op[0].setAttribute('selected','selected');
selected2.style.display = 'none';
var number = 1;
var choice = [];
var address = [];
address[0] = [];
address[1] = [
'http://htmlbook.ru/css/border-bottom',
'http://htmlbook.ru/css/border-bottom-color',
'http://htmlbook.ru/css/border-color',
'http://htmlbook.ru/css/border-left-width'
]
address[2] = [
'http://htmlbook.ru/css/clear',
'http://htmlbook.ru/css/float',
'http://htmlbook.ru/css/font-family',
'http://htmlbook.ru/css/font-size'
]
address[3] = [
'http://htmlbook.ru/css/list-style-image',
'http://htmlbook.ru/css/margin',
'http://htmlbook.ru/css/min-height',
'http://htmlbook.ru/css/padding-left'
]
choice[0] = ['Выбрать вуз'];
choice[1] = [
'border-bottom',
'border-bottom-color',
'border-color',
'border-left-width'
]
choice[2] = [
'clear',
'float',
'font-family',
'font-size'
]
choice[3] = [
'list-style-image',
'margin',
'min-height',
'padding-left'
]
function creat(){
var n = selected1.selectedIndex;
number = n;
var value = op[n].value
selected2.style.display = 'block';

for(var i = op2.length-1;i>=1;i--){
op2[i].parentNode.removeChild(op2[i])
}
for(var i=0;i<address[n].length;i++){
var option = document.createElement('option');
option.setAttribute('value',address[n][i]);
option.innerHTML = choice[n][i];
selected2.appendChild(option);
}
op2[0].setAttribute('selected','selected');
}
function selector(){
var n = selected2.selectedIndex;
document.location = address[number][n];
}
</script>
</body>
</html>

Link to comment
Share on other sites

  • 0
Поднял у себя локально вашу страничку, ща поэкспериментируем.

UPD: Вот я чудила! Это ж jQuery долбаный!

if (isSubselectOptional) {
var ch = $('#' + child);
ch.prepend('<option value="none" selected="selected">Выбрать ВУЗ</option>');
ch.show();
ch.each(function() {
this.selectedIndex = 0;
});
}

Спасибо Great Rash! Большое!

Это я чудила, что обращаюсь с такими вопросами.. просто я паникёр, а когда паникую.. мой мозг отключается..(

Терафлю кстати ни разу не пил и надеюсь не буду пить))

Я тут кстати недавно решал дела с армией... я ушёл в запас!) Так вот моя паника мне помогла).. я у психиатра начал негативно отвечать на её вопросы, она мне начала показывать какие-то тупые картинки, я сказал - "руки бы оторвать тому, кто рисовал эти картинки", её переклинило))) и дала мне направление в ПНД (Психо-неврологический диспансер) там мне сказали, что типа уважаемый, зачем вас военкоматы к нам засылают? Вы ведь абсолютно нормальные.. в общем как-то получилось так, что меня это отмазало от армии.

Edited by BassEast
Link to comment
Share on other sites

  • 0
Спасибо Great Rash! Большое!

Я тут кстати недавно решал дела с армией... я ушёл в запас!) Так вот моя паника мне помогла).. я у психиатра начал негативно отвечать на её вопросы, она мне начала показывать какие-то тупые картинки, я сказал - "руки бы оторвать тому, кто рисовал эти картинки", её переклинило))) и дала мне направление в ПНД (Психо-неврологический диспансер) там мне сказали, что типа уважаемый, зачем вас военкоматы к нам засылают? Вы ведь абсолютно нормальные.. в общем как-то получилось так, что меня это отмазало от армии.

Да ты я смотрю псих тот ещё)))

Link to comment
Share on other sites

  • 0
Да ты я смотрю псих тот ещё)))

;) тот ещё! Восточный темперамент, так мне сказали в военкомате, в мирное время с таким диагнозом не призывают.

Edited by BassEast
Link to comment
Share on other sites

  • 0
Восточный темперамент, так мне сказали в военкомате, в мирное время с таким диагнозом не призывают.

И правильно делают, а то прикинь, заведет такой парень танк под окнами казармы в 3 часа ночи, врубит там "чорние глаза" и давай плясать пол ночи...

Link to comment
Share on other sites

  • 0
И правильно делают, а то прикинь, заведет такой парень танк под окнами казармы в 3 часа ночи, врубит там "чорние глаза" и давай плясать пол ночи...

Не про меня, определённо ;)

Link to comment
Share on other sites

  • 0

Вернусь к своим баранкам.

http://theraflu-promo.ru/ — там, где селект "Голосовать за фотографию участника", в IE6 после "выбрать город", сразу перелистывает на последнее значение второго селекта, хотя по идее там должен открыться второй селект "Выбрать ВУЗ".

Видимо IE6 не хочет понимать вот этот кусок: .prepend("<option value='none' selected>Выбрать ВУЗ</option>");

Прошу помочь разобраться в этом косяке.

p.s. кстати говоря в Opera 110.. — баг тоже присутствует :facepalmxd:

Edited by BassEast
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy