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