За последние 24 часа нас посетили 22592 программиста и 1015 роботов. Сейчас ищут 618 программистов ...

Интерфейс - сортировка чекбоксов пользователем

Тема в разделе "Прочие вопросы по PHP", создана пользователем tommyangelo, 8 апр 2011.

  1. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Тема перекликается с вопросом от Padaboo

    Есть набор чекбоксов(10-30 штук).

    Задача - дать пользователю возможность менять их порядок (помимо собственно работы с ними)

    Не могу придумать удобный интерфейс....

    В лоб реализовал так - при создании/редактировании чекбокса в выпадающем списке указывается его позиция относительно остальных (например - "После НомераПервого")

    Смотрел в сторону JQuery Dragable, но хз, удобно ли будет с чекбоксами работать.

    Может кто сталкивался?
     
  2. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Даже не dragable, а sortable - это прям то, что нужно.
    Удобно будет, если дать возможность цепляться за большую область вокруг чекбокса, включая его подпись, конечно.
     
  3. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Недавно делал дерево меню с перетаскиваемыми элементами с помощью плагинов JQuery - Draggables и Droppables.
    Инициализировать очень легко. По факту перемещения элемента или его скидыванию на другой назначаются обработчики, которым передается перетаскиваемый элемент и тот, на который что-то перетащили.

    Сделал так.
    В элементах меню добавил фейковые поля небольшой толщины, на которые можно сбрасывать элементы. Это могут быть div контейнеры между чекбоксами. Они настроены, как приемщики события droppable. А чекбоксы нужно настроить, как draggable.
    По событию сброса на это поле пишу
    Код (Text):
    1.  
    2. $('#sidebar_menu a').droppable({
    3.   drop:function(event,ui){
    4.     var draggable=ui.draggable;
    5.     var droppable=$(this);
    6.     droppable.before(draggable);
    7.   }
    8. });
    Это если попало на поле, которое над чекбоксом. Ну и т.д. Могу подробней расписать.
     
  4. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    действительно, зачем использовать sortable, если можно написать свой ;)
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    tommyangelo
    я делал сортировку на этой штуке и все ок пашет. вобще ни каких проблем не встретил, сделал за пять минут.

    принцип такой: делаешь хидден поле, в него по событию перетаскивания пишешь всю последовательность в формате JSON кажется. =) и при получении формы в на стороне сервера работаешь с чекбоксами и с этими данными о порядке. все проще пареной репы.
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Всем большое спасибо

    MiksIr
    Да, именно его я и имел в виду )))) И зацепиться там есть за что - у каждого чекбокса есть <label> соответствующая.
    В <ul><li> оберну и будет всё ок.

    YSandro
    sortable мне больше подойдет, тем более, что уже работал с ним. Dragable/Dropable имхо больше предназначен для позиционирования. А тут - обычная сортировка.

    igordata
    Да, это как вариант.
    Можно в JSON, можно свой формат придумать))))
    Суть - передать пары id:sort_no

    Еще раз спасибо.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    json в пхп поддерживается родными функциями
     
  8. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    igordata

    :) разумеется. А в JS ?
     
  9. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    jquery plugin :)
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    tommyangelo
    там же где сортировка там же и JSON

    он везде уже =)
     
  11. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    ок, спасибо.

    Еще такой момент - а пользователь поймет, что эти штучки перетаскивать можно?
    Может ему подсказку какую влепить?
     
  12. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    крылышки чекбоксам если нарисовать, и анимацию пархания :)
    всплывающую подсказку при наведении можно, или оформить в контейнеры, в которых будут картинки со стрелочками..
    при наведении менять курсор на крестик
     
  13. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    В примерах сортейбл используется изменение курсора. А вообще не поверите... написать ;) Можно сделать ссылку-переключатель "Отсортировать", по нажатию на которую меняешь стили LI-шек, например даешь пунктир по боксу и подсказку - можете перетаскивать, блин. Все очевидное - просто и наоброт. Не нужно выдумывать какие-то иконки, если можно написать словами.
     
  14. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    За эту мысль огромный респектище. Спасибо.

    Про написать - поддерживаю, всегда стараюсь подсказки делать. Просто хочется и красивостей тоже))))