изменить принцип работы <select multiple>

aZa

Новичок
изменить принцип работы <select multiple>

Необходимо изменить работу combo-box-а <select> с 'multiple' таким образом, чтобы при клике на очередной невыделенный элемент он *добавлялся* к выбору, как при выборе с нажатым ctrl и соответственно при нажатие на выделенный - убрать его из общего списка (тоже как при зажатом ctrl).

Как бы это проще всего реализовать?
 

aZa

Новичок
Блин, какое-то сильно запутаное получилось объяснение. :)

Короче мне нужно, чтобы комбо-бокс вел себя также как при зажатой кнопке контрол. Вот. Самое простое определение. ;)
 

si

Administrator
Изменять общепринятое поведение имхо не правильно, это только запутает людей которые знаю как должен работать контрол.
 

nRay

Guest
Быть может, тебе подойдёт такое решение:

http://news.yandex.ru/advanced.html

контрол - "источники"
 

aZa

Новичок
Я прекрасно понимаю, что это не совсем следует логике "правильного интерфеса" (изменение общепринятых стандартов), но нужно и все тут.

Нужно программно "зажать" ctrl для всех кликов пользователя в области комбо-бокса, на Яндексе это не реализовано.
 

Altex

Новичок
*) для этого существуют checkbox'ы

*) не надо помоему пытаться сделать то, что не должно работать, ни "по общепринятым" ни по официальным стандартам, чтобы в один прекрасный момент не переделывать всё заново.

*) Это напоминает весч, когда заказчик хочет чтобы ему сделали сайт с которого нельзя было скопировать ни картинки ни текст (напимер правой кнопкой мыши) или чтобы нельзя было посмотреть код HTML страницы защищая её JavaScript'ом (например чтобы при клике правой кнопкой на странице выдавалось предупреждение о невозможности операции), это бред имхо, от непонимания основополагающих принципов работы клиент-серверного приложения. им сюда - faq.phpclub.net/na_tanke

*) если тебя это не убедило сделать так как надо, то можно попробывать JavaScript'ом "доработать" обычный select
 

aZa

Новичок
... у меня в последнее время складывается такое мнение, что здесь все всех склонны "учить жить", но простого ответа на вопрос или хотя бы каких-то наводящих советов еще никто (абсолютно никто) не дал! зато замечаний по поводу того, как это плохо и неправильно - хоть отбавляй!... :rolleyes:

я же написал, что понимаю, что это не совсем правильный подход, но я и не спрашиваю альтернативных путей решения проблемы. мне нужно решить именно эту или точно знать о невозможности ее решения. все, никаких других советов мне не нужно, а то разводится просто какой-то балаган на тему "а давайте мы его поучим как правильно", "наставим, так сказать, на путь истинный" ... :rolleyes:

есть проблема, нет ответа.

Автор оригинала: Altex
...
*) если тебя это не убедило сделать так как надо, то можно попробывать JavaScript'ом "доработать" обычный select
...
Да что ты говоришь?! Серьезно???! Блин, ты расскрыл мне глаза! Теперь все становится ясно, как день! Как же я раньше не догадался до такой просто и вместе с тем гениальной мысли! :D ....

.... Ясное дело, что на JavaScript-е! Я бы хотел увидеть может какие-то примеры, куски кода, etc ... желательно с минимальным кол-вом кода ... алгоритм то всего-ничего - "зажать" программно ctrl для определенного элемента интерфейса!

P.S.: это вообще возможно реализовать на JS?
 

Altex

Новичок
Никто специально для тебя писать этот скрипт не будет, как ты это понять не можешь. Это индивидуальные проблемы, поэтому их решение никому кроме тебя не нужно. Даже если кто-то напишет, то это нигде использоваться не будет кроме как у тебя, поэтому не расчитывай на большее, учи явяскрипт.

Кстати, ты хоть пытался хоть что-то сделать сам? Если нет, то попробуй, вдруг получится и без нас, "разводящих какойто балаган".
 

aZa

Новичок
а на фига тогда вообще форумы, если никто на них советов не дает?... чтобы "потусоваться" и жизни поучить "ламерков вшивеньких"? :D...

может кто-то сталкивался с такой проблемой, или хотя бы видел сайт, где это реализовано (я точно помню, что где-то мне такое попадалось, но никак не вспомню где! может даже не в интернете, а в какой-то обычной софтинке ... потому и не уверен возможно ли это на JS)

2Altex: если не знаешь - лучше промолчать, меньше "мсуора" будет; а только кокнкретные ответы на конкретные вопросы - увеличится "ценность информации на 1Кб текста" форумов PHP-клуба.
 

Altex

Новичок
*) ценный совет дал выше
Кстати, ты хоть пытался хоть что-то сделать сам? Если нет, то попробуй, вдруг получится и без нас, "разводящих какойто балаган".
*) для чего нужны форумы давал развёрнитейший ответ Фанат, поищи
 

lucas

Guest
а на фига тогда вообще форумы, если никто на них советов не дает
Месье видит различие между советом (которых никогда не жалко) и готовым работающим исходником (который, кстати, денег стоит)?
 

si

Administrator
aZa
Если человек на улице по просит меня помочь ему спрыгнуть с крыши, а то ему самому страшно, я это понятно делать не буду, пусть он сам с нее прыгает ...
 

aZa

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

Кто вам сказал, что я собираюсь прыгать с крыши этого здания? А может вы не видите парашута за моей спиной?!

Кажется на AG.ru listbox голосовалки на лучшые игры года с громадными списками были реализованы именно таким образом ... Блин, точно помню где-то видел и очень понравилось, что чертовски было удобно, а где видел не помню! :(

Сами подумаете - листаем лист с кол-вом элементов этак под 500-600, выбираем позиции, зажимая ctrl, а потом в какой-то момент просто не попадаешь по скроллингу, мышка дергается и ты случайно кликаешь левее скролла и весь предыдущий выбор слетает нафиг! .... Удобно?...

P.S.: не надо мне объяснять как плохо прыгать с крыши, просто объясните мне как войти в здание, я понимаю - это личное время, это дополнительные проблемы - тогда просто скажите, а есть ли вообще вход в это здание, есть ли вообще смысл тратить время на его поиск!

P.S.S.: fixxxer: интересно, но слишком как-то неудобно :) хотелось бы поэлегантнее решение.
 

Altex

Новичок
aZa
Ну храни отмечененные переменные в отдельном массиве, при change в селекте проверяй где было кликнуто, меняй состояние кликнутого и восстанавливай все выделенные до этого. На JavaScript это очень просто реализоапть.
 

su1d

Старожил PHPClubа
aZa
ты phpMyAdmin юзаешь? видел там, как в листинге данных из таблицы, можно "помечать" некоторые ряды другим цветом?
зачем тебе SELECT-box? сделай простой DIV со style="overflow:hidden" и "дёрни" код из phpMyAdmin'а.
это решит половину твоей проблемы. вторую -- как передать идентификаторы нажатых клеток на сервер -- думаю, сможешь сделать сам.

а вообще, тебе люди правильно говорят: не меняй общеупотребимые виджеты. сделай лучше свой: в таблицу, описанную мной выше добавь чекбокс в каждый ряд -- намного ведь юзабельнее будет. а саму строчку с текстом заключи в <LABEL>, чтобы чекбокс срабатывал при нажатии на текст, а не на сам маленький квадратик.
 

sergadm

Новичок
"selected" позволяет нам, запрограммировано выбирать списки
selectName.options [index] .selected
а также комбинация onclick м прочего
 

Ferr

Guest
Я не пойму что-то... А Это чем не решение: http://news.yandex.ru/advanced.html

Лисаешь 500 строк, и перекидываешь что надо...
Хм.
 

aZa

Новичок
Решение у Яндекса и правда симпатичное и очень удобное.

Вообщем-то проблема решилась убеждением таки заказчика в том, что при реализации лист-бокса в том виде, в каком он хочет, мы меняем какие-то "стандарты поведения Windows элементов" :) ... так что остался только спортивный интерес! ;)



Ну храни отмечененные переменные в отдельном массиве, при change в селекте проверяй где было кликнуто, меняй состояние кликнутого и восстанавливай все выделенные до этого. На JavaScript это очень просто реализоапть.
а как можно "вытянуть" (по какой проперти?) на какой именно элемент было кликнуто?.. идея мне нравится
 
Сверху