Азиз Таифов
37 сообщений
#14 лет назад
Здравствуйте! Подскажите пожалуйста, как один из пунктов селект меню скрыть в списке, т.е. имеется вот такое меню:
<select>
<option selected="selected">выберите город</option>
<option>Москва</option>
<option>Лондон</option>
<option>Рига</option>
</select>

Нужно чтобы до того как пользователь открыл меню была надпись "выберите город", а когда откроется только города. Сейчас оно дублируется, выходит два раза "выберите город", сверху и в списке.
Подскажите пожалуйста как сделать такое. Заранее большое спасибо!
Максим Ф.
3195 сообщений
#14 лет назад
В таком виде дубляжа не будет.
Приводите полный код, скорее всего разработчики сделали так, чтобы первый пункт добавлялся автоматически, а в вашем списке городов нужно удалить пункт выбора.
Себастьян Ф.
584 сообщения
#14 лет назад

<select onmousedown="if(this.options.value=='0') this.options = null;" style="width:200px;">
<option value="0" selected="selected">Хочешь зарплату?</option>
<option value="1">Нет, не хочу</option>
<option value="2">Нет, спасибо</option>
</select>


Максим Ф.
3195 сообщений
#14 лет назад
Грязный хак.

Тогда так:
<select onmousedown="if(this.options.value=='0' || this.options.value=='1') this.options = null;" style="width:200px;">
<option value="0" selected="selected">Хочешь зарплату?</option>
<option value="1">Нет, не хочу</option>
<option value="2">Нет, спасибо</option>
</select>


Кстати код, что выше (да и мой тоже) убирает 0-ль элемент не при маусдаун, а сразу же (в IE).
Себастьян Ф.
584 сообщения
#14 лет назад
Цитата ("AlekartRu"):
убирает 0-ль элемент не при маусдаун, а сразу же (в IE).


У меня в 8-ом все норм Есть такая фишка, что броузер запоминает позицию выбранного элемента списка и при обновлении выбирает его автоматом. М.б. этот случай? Помогает Ctrl+F5..


Оффтопик
this.options.value=='1'


не надо лишать юзера права выбора, вдруг он не захочет говорить "спасибо"
Максим Ф.
3195 сообщений
#14 лет назад
Цитата ("SField"):
Есть такая фишка, что броузер запоминает позицию выбранного элемента списка и при обновлении выбирает его автоматом. М.б. этот случай?

Нет, при загрузке страницы только два элемента в селекте, IE не ниже восьмого, второй раз запускать его, чтобы версию посмотреть не буду.

Цитата ("SField"):
не надо лишать юзера права выбора, вдруг он не захочет говорить "спасибо"

Ну да. Я прочитал на автомате первый пункт, как "Да, дайте две", а там тоже "Нет, не хочу". Пора спать))
Азиз Таифов
37 сообщений
#14 лет назад
Спасибо большое друзья! Очень помогаете.

Но у меня не получилось. Я использую плагин CuSel (). Добавляю код, что Вы указали выше, но все равно без изменений, дублируется строка, даже если выбрать любой из пунктов, то он и вверху и в списке. Подскажите пожалуйста в чем может быть проблема. Заранее спасибо!
Максим Ф.
3195 сообщений
#14 лет назад
Так код свой полностью приведи.
Роман П.
1599 сообщений
#14 лет назад
Цитата ("AlekartRu"):
В таком виде дубляжа не будет.


Ну как же не будет-то? Посмотрите тут где бюджет - если открыть селект, то опция "не определен" есть и в списке и в текущем состоянии - т.е. два раза.

TaifovAziz, вероятно надо на onclick уничтожать первую опцию с value=0. Только не забыть ее обратно прилеплять потом.. хм.. что-то все равно чушь какая-то) лучше оставьте как есть, это стандартно и никому никогда не мешало)
Максим Ф.
3195 сообщений
#14 лет назад
Цитата ("Crist"):
если открыть селект, то опция "не определен" есть и в списке и в текущем состоянии - т.е. два раза.

Чувствую себя идиотом)) Могли бы вы скриншот сделать? У меня один раз.
Артем Л.
11416 сообщений
#14 лет назад
Владислав М.
102 сообщения
#14 лет назад
А disabled не пойдет?
Евгений О.
2989 сообщений
#14 лет назад
Есть один более менее приемлемый способ. Поверх тестовой части селекта накладывается неактивный <input type="text"> с нужным текстом. А дальше пишем обработку на javascript. Если селект пустой и список закрыт показываем инпут, иначе скрываем. При таком подходе не нужно указывать в селекте значение по умолчанию типа "выберите город", оно указывается в инпуте.
Себастьян Ф.
584 сообщения
#14 лет назад
Цитата ("TaifovAziz"):
Я использую плагин CuSel (...). Добавляю код, что Вы указали выше, но все равно без изменений, дублируется строка, даже если выбрать любой из пунктов, то он и вверху и в списке. Подскажите пожалуйста в чем может быть проблема.


Cusel перегружает select (в смысле, что берет из него данные, а потом их уже самостоятельно обрабатывает), соответственно тот код что выше не подойдет.
Нужно в объявлении cusel, добавить такой же грязный хак , для этого надо повесить на onclick удаление первого элемента, что-то вроде:


var h=false;

jQuery("#cuselFrame-country").click(function(){
if(!h) {jQuery("#cuselFrame-country .cuselActive").hide(); h=true;}
});


Этот код в стандартном примере, в первом селекте:
Оригинал тут:
Азиз Таифов
37 сообщений
#14 лет назад
SField, Спасибо Вам большое. Все работает отлично!

Всем остальным тоже огромное спасибо, очень помогли.