Это можно легко сделать, обработав событие выбора селектируемого пользовательского интерфейса jQuery.
Выбираемый плагин добавляет ui-selecting
классы во время операции выбора.Когда операция выбора завершается (т. Е. Вы отпускаете левую кнопку мыши), она превращает все элементы ui-selecting
в ui-selected
.Кроме этого, внутри ничего не хранится информация об элементах, которые должны быть выбраны.
Это облегчает нашу работу, когда каждый элемент превращается в состояние ui-selecting
, происходит событие selecting
.Там мы можем подсчитать общее количество элементов .ui-selecting
и .ui-selected
, и если оно превышает допустимый предел, просто удалите класс ui-selecting
из текущего элемента.
Это решение работает на всех выбранныхоперации, один клик, Ctrl Multi Select и даже выделение ограничивающего прямоугольника.
$('ul').selectable({
selecting: function(event,ui){
// With the current item selected, are we over 4 items (the allowed maximum)?
if($(this).find('.ui-selecting,.ui-selected').length > 4)
// If yes, just remove it from the current selection
$(ui.selecting).removeClass('ui-selecting');
}
});
Демо: http://jsfiddle.net/Vbbfs/