Выпадающий список jQuery снимите флажок, если уже установлено определенное количество флажков

#jquery #drop-down-menu

#jquery #выпадающее меню

Вопрос:

Я работаю с выпадающим списком jQuery. Я бы хотел, чтобы после проверки определенного количества параметров (например, трех), если я проверю четвертый, он не проверялся.

Я видел, что есть: onItemClick: function(checkbox) {} . Есть ли какой-либо способ узнать количество проверенных элементов внутри этой функции? У меня его нет.

Я также пробовал с событием изменения базового html select, но безуспешно (я получаю что-то, но не совсем ту функциональность, которая мне нужна).

Ответ №1:

Возможно, более простым решением было бы что-то вроде:

 $('input:checkbox').click(
    function(){
        if ($('input:checkbox:checked').length >= 3) {
           return false;
        }
    });
  

Демонстрация JS Fiddle.

Хотя вышеуказанное опубликовано из-за моего незнания onItemClick функции. Возможно, и мы надеемся, что другие могут предложить более уместные советы относительно этого аспекта вопроса.

Ответ №2:

onItemClick: функция (флажок) {} Опция onItemClick определяет функцию обратного вызова, вызываемую, когда пользователь нажимает на любой элемент. Вызывается с единственным аргументом, который является динамически генерируемым элементом checkbox. Обратный вызов может «отклонить» щелчок, выдав любую ошибку.

Итак, что-то вроде этого должно сработать (непроверено):

 onItemClick: function(checkbox) {
    if($("#ddcl-YOURSELECTID-ddw input:checked").length >=3){
        throw "TOO MANY!";
    }
} 
  

Вы также захотите проверить checkbox переданное, чтобы увидеть, установлено оно или нет, прежде чем отклонять его, поскольку вы не хотите запрещать снятие флажка. Я не уверен, в каком состоянии находится переданный флажок (до или после щелчка), поэтому вам нужно просто проверить это и добавить соответствующее условие в if.