Многоуровневый cuSel. Быть или не быть?

Автор: Евгений Рыжков Дата публикации: 06.07.2011

Поступило предложение сделать возможность многоуровневого cuSel, тем самым расширить функциональные возможности выпадающего спиcка формы. Текст самого предложения (автор Антон):

Для каждого option в плагине можно добавлять тэги через addTags. Теоретически возможно туда вставить список ul, который будут отображать при hover на оптион. Получится что-то вроде двухуровневого списка: если вложенного списка нет, значение будет как обычно — браться из оптион, а если же есть, тогда значение будет браться из li. Соответственно и выделение активного пункта будет уже у li.

Вопрос: зачем это и где применить? Ведь в обычных списках такого нет.

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

Вот такие аргументы «за» предложения.

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

cuSel — это в первую очередь реализация элемента формы select, который и должен использоваться в формах. Передается одно значение (мультивыбор тут не рассматривается). Да и в таких формах, где какие-либо данные подгружаются при выборе/заполнении определенных полей тоже имеют свой смысл и экономия места на странице не всегда основная задача таких действий. Скорее для экономии веса страницы. Потому описанный выше пример — как минимум не удачный пример применения.

Но в cuSel сейчас не реализована поддержка optgroup — сам тег предназначен для группировки оптионов. Так вот для экономии места можно было бы его использовать как плацдарм для второго уровня.

Просто многоуровневое меню и так можно сделать на CSS, без тяжелых библиотек. А если понадобиться какие-то данные передавать, то можно добавить input type=hidden и пару строк Javascript написать. В общем хотелось бы услышать мнение сообщества о полезности данной функции. Стоит ли ее реализовывать? И где реально она может пригодиться?