Замена Стандартного Выбора С Помощью Mootools

Иногда вам нужно заменить стандартный HTML-элемент select своим собственным.

Обычно это необходимо, если у дизайнера разыгралась фантазия и он рисует «кастомный» селект и настаивает, чтобы он был реализован так, как ему хотелось.

Что ж, надо, мы это сделаем.



Немного предыстории.

Однажды мне нужно было настроить select. Я пользуюсь mootools, поэтому сразу пошел искать плагин на замену select — а вдруг его кто-то уже написал? Действительно, я нашел несколько.

Я начал в этом разбираться.

Все просмотренные мной плагины оказались полной ерундой — они не вели себя как стандартный выбор.

Я выбросил их на помойку и решил написать свой плагин, который бы полностью повторял поведение стандартного селекта.

Давайте теперь посмотрим, как ведет себя стандартный выбор:

  • Вы можете сосредоточиться на этом
  • Выбрать можно не открывая select, а используя клавиши со стрелками
  • Вы можете закрыть открытый выбор, нажав esc
  • Вы можете выбрать опцию в открытом селекторе, нажав Enter.
  • Вы можете удалить фокус с выбора, нажав Tab
  • Если в селете много вариантов, то появляется прокрутка
  • select имеет событие onchange (есть и другие, но это самое важное)
  • В стандартном селекторе можно ввести первую букву и фокус перейдет непосредственно на элемент.


Перейдем к делу

Код того, что здесь произошло, приводить не буду — бесполезно.

Лучше сделать это самому скачать и посмотри или посмотри демо .

Но я расскажу вам, что произошло.



Что случилось

Итак, у нас появился собственный «кастомный» селектор.

И вот что он может сделать:

  • Стандартное поведение, такое как «родной» выбор
  • Заменяет указанный выбор самим собой
  • Имеет целых 4 события: onChange, onSelect, onShow, onHide
  • Поддерживает темы
  • Имеет четкий CSS
  • Имеет простую модель DOM.
  • Легко использовать
  • У него есть метод rebuild(), с помощью которого вы можете перестроить «пользовательский» селектор, если в собственном селекте происходят изменения.

  • JS-код весит около 4 килобайт в сжатом виде и 7,5 в несжатом.



Каковы текущие проблемы?

  1. Вы не можете изменить тип полосы прокрутки, которая появляется в поле выбора, если имеется большое количество опций.

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

  3. Многократного режима нет
  4. Таймаут при прокрутке, чтобы опция при наведении мыши при прокрутке не подсвечивалась сразу (именно так и есть при нативном выборе)
  5. Не меняет внешний вид при нажатии
  6. Если есть прокрутка, она должна прокручиваться автоматически при выборе элементов.

  7. Если навести курсор мыши на пункт меню, а затем убрать мышь, то при нажатии Enter этот пункт должен быть выбран
Я постараюсь исправить все эти проблемы в следующих релизах.

Тестировалось только в IE 7, Firefox 3.0.1, Google Chrome (кто-нибудь смотрел, как это работает в Opera и IE6?) Если вы что-то пропустили, дайте мне знать.

И, конечно же, сообщайте о найденных ошибках, и я их исправлю.

Скачать CustomSelect Посмотреть демо Теги: #mootools #select #JavaScript #mootools

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.