Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вставить новые элементы в select multiple не заменяя выделенные в данный момент элементы
 
 автор: FireTiger   (17.08.2008 в 02:56)   письмо автору
 
 

Собственно примерно такой случай:
При событии onchange списка разделов мне нужно сформировать список категорий данного раздела (select multiple). Делаю ajax-запрос на выборку категорий с id раздела. На стороне сервера формирую элементы списка всех категорий, а потом мне нужно результат вставить в список select multiple, т.е. дозаписать эти новые данные в тот список. При этом, если в списке были выделены элементы, то их оставить, а все не выделенные заменить новыми сформированными. Во-первых я не знаю как сделать дозапись, а во-вторых не знаю как при этом оставить выделенные элементы и заменить не выделенные.. Пожалуйста, нужна помощь, сам уже не знаю как делать....

  Ответить  
 
 автор: PAT   (17.08.2008 в 04:03)   письмо автору
 
   для: FireTiger   (17.08.2008 в 02:56)
 

Дурацкий какой-то способ вы выбрали.

Поясняю - юзер может выбрать опшены в мультиселекте несколькими способами.

1. Берём ИДЕАЛЬНОГО юзера, который ЗНАЕТ - как пользоваться мультиселектом.
Т.е. он подведет мышь к "верхнему" из нужных опшенов и нажмет левую
кнопку мыши. И затем, не отпуская кнопку, "опустит" мышь на столько опшенов, сколько ему нужно.
И только в последний момент отпустит кнопку мыши.
Тогда - при отпускании кнопки мыши - ONCHANGE сработает и функция заменит невыделенные
опшены. Всё ОК.

2. Но а если юзер ОБЫЧНЫЙ, т.е. привычный к одинарным селектам?
Он поначалу КЛИКНЕТ по одному опшену, т.е. нажмет и отпустит кнопку мыши - ONCHANGE сработает, опшены заменятся...
И только потом до него дойдёт, что селект вообще-то дает возможность выбрать несколько опшенов...
А поезд уже ушел - все невыделенные опшены уже изменились... выбора он себя лишил.

3. А если юзер будет выбирать при помощи клавиатуры, используя Shift и стрелки, то там вообще "туши свет"...

В общем - ерунду вы придумали.

Подсказывать не буду.
Потому как даже если и сделаете - скрипт замены опшенов с оставлением выделенных совсем несложен - всё-равно в итоге от этого дурацкого способа откажетесь. Ибо неудобно и глупо.

  Ответить  
 
 автор: FireTiger   (18.08.2008 в 00:27)   письмо автору
 
   для: PAT   (17.08.2008 в 04:03)
 

Во-первых, Вы не до конца поняли как это должно выглядеть... У нас первый список не multiple, а обычный. Этот список содержит все разделы. При onchange первого списка, следующий список (уже multiple) должен заполнится категорями выбранного раздела. Потом юзер должен выделить несколько или один option. Это будет означать что блок (опрос в блоке и т.п.) будет показываться на этих категориях. А потом при вновь выбранном разделе из обычного списка разделов должен сформироваться новый список категорий, только при этом те выделенные категории должны остаться, а не выбранные замениться этим сформированным списком.

И во-вторых, я с Вами полностью соглашаюсь, что способ плохой и неудобный.. Но до того времени как писал первый пост ничего лучше не придумал. Так вот я придумал новый способ и хочу чтобы вы сказали, будет ли так удобно. Смотрите, чтобы определить на каких категориях должен показываться данный блок информации мы имеем три поля select. Первое поле обычное со списком всех разделов. При событии onchange формируется второй список multiple, который содержит все категории выбранного раздела. Юзер выбирает из этого списка те категории, на которых должен показываться данный блок и окончании выбора, он должен нажать кнопку "Добавить", которая отправляет выбранные категории в новый список. Потом, если нужно добавить еще категорий на которых должен отображаться блок, но при этом категории должны быть из другого раздела, то он вновь выбирает из списка разделов (не multiple) раздел, и формируются новые категории, которые записываются во второй список заменяя все предыдущие. Потом юзер выбирает категории из второго списка и добавляет их в третий (результирующий список). Таким образом можно наполнить третий список (multiple (!) ), который содержит все категории из разных разделов, на которых должен отображаться данный блок информации. Как по-моему, то на этом раз все очень удобно и просто. Что Вы скажите? Если плохо, то предложите свой вариант?

  Ответить  
 
 автор: PAT   (18.08.2008 в 01:44)   письмо автору
 
   для: FireTiger   (18.08.2008 в 00:27)
 

Мультиселект ПЛОХ тем, что выделять можно ТОЛЬКО соседние опшены.

Именно поэтому он практически НИГДЕ не применяется.

Например, в первом селекте юзеру предлагается выбрать ПРОДУКЦИЮ из списка:
* Напитки
* Колбасные изделия
* Хлебопродукты

Положим, выбрал он "Напитки".
Вы сформировали мультиселект с набором напитков и предлагаете юзеру сделать множественный выбор из следующего списка:
* Пиво "Балтика-3"
* Вино "Ркацители"
* Водка "Путинка"
* Коньяк "Арарат"
* Шампанское "Советское"

Юзер хочет добавить в список покупок (третий список) водку и пиво. Ну вот любит он ёрш - это ведь его право, не так ли?
Но как это ему сделать в мультиселекте?
А никак? СОВСЕМ никак!
Чтобы сделать ёрш, товарищ ДОЛЖЕН купить В НАГРУЗКУ ещё и ненужное ему "Ркацители".

Ну и нахрена такой выбор, в котором ВЫБРАТЬ нужное НЕЛЬЗЯ?


В общем, порекомендую не маяться дурью и уйти от мультиселекта совсем.
По выбору "Напитки" в первом селекте надо юзеру дать DIV с вертикальным скроллом, в котором будут все указанные выше напитки в виде списка "Наименование -- непомеченный_чекбокс".
Пометит юзер чекбоксы у тех напитков, кои ему интересны - и вот тогда пусть добавляет их в итоговый (третий) список. И спокойно может делать ёрш, не тратя лишних денег...
Где-то так я это дело вижу :-)

  Ответить  
 
 автор: FireTiger   (18.08.2008 в 11:50)   письмо автору
 
   для: PAT   (18.08.2008 в 01:44)
 

Спасибо за ответ!
Но в мультиселекте можно выбирать не только соседние элементы, можно зажать Ctrl и выбрать другие, не соседние элементы как и в примере с пивом и водкой. Так что по-моему ограничений нет. Но соглашусь еще с Вами в том, что юзеры не все умные и некоторые могут не догадаться, что можно зажать Ctrl для выбора не соседних элементов списка.

Спасибо еще и за Ваш пример, обязательно рассмотрю ;)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования