Перетаскивание копии всех выбранных элементов из поля выбора - возможно? - PullRequest
0 голосов
/ 01 октября 2009

У меня есть веб-интерфейс списка выбора: пара элементов выбора с парой кнопок (стрелка влево и стрелка вправо) между ними. Пользователи могут перемещать элементы между двумя столбцами, например, выбрав один из параметров в левом столбце и нажав стрелку вправо.

Теперь у меня есть запрос на улучшение: кто-то хочет иметь возможность перетаскивать элементы между двумя столбцами вместо нажатия кнопки. Проблема с моей первоначальной установкой с двумя полями выбора состоит в том, что, как только я щелкаю один из выделенных параметров, чтобы инициировать перетаскивание, все другие выбранные параметры отменяются. Используя jQuery, я прикрепил обработчики событий mousedown к обоим полям выбора и к каждому отдельному параметру, который просто вызывает protectDefault () для объекта события, но этого недостаточно. В Firefox 3 включенный параметр сразу же теряет фокус, но все остальные параметры по-прежнему отменяются, а в IE6 (который, к сожалению, мне все еще приходится поддерживать) он вообще не имеет значения.

Так что я подумал, что, возможно, смогу создать разумное факсимильное окно для блока выбора, используя элементы списка или элементы div или что-то еще. Я могу создать что-то разумное, работающее в Firefox, но в IE6, если я нажимаю клавишу Shift на элементе моего объекта псевдо-выбора (чтобы выбрать диапазон опций), IE выделяет весь текст между тем, где я нажмите и последнее место, которое я нажал. Опять же, я прикрепил обработчики mousedown, mouseup и click для всех объектов, которые там используются, но не помогает.

Я даже пытался накладывать прозрачные элементы div на мои исходные блоки выбора и мои объекты псевдо-выбора, думая перехватывать щелчки мыши и управлять выделениями вручную, но я не могу заставить его работать в IE. Если я использую поле выбора, я не могу запретить щелчкам изменять выделение, и если я использую текст, который выглядит просто как элемент выбора, я не могу помешать ему выбрать диапазон текста по нажатию клавиши Shift.

Есть какое-то общее решение, или мне просто не повезло?

Ответы [ 2 ]

0 голосов
/ 10 мая 2010

Я закончил тем, что ушел с атрибутом unselectable.

0 голосов
/ 01 октября 2009

Проверьте сортировку пользовательского интерфейса Jquery с двумя связными сортируемыми списками: http://jqueryui.com/demos/sortable/#connect-lists

Это просто:

    $('.selector').sortable({ connectWith: '.otherlist' });
...