Прекратите проверять флажки после того, как несколько флажков были проверены в jQuery или JavaScript - PullRequest
2 голосов
/ 09 ноября 2011

Я хочу, чтобы пользователь не проверял другой флажок после того, как определенное количество флажков уже было проверено.т. е. после того, как установлены 3 флажка, пользователь больше не может проверять, и появляется сообщение «Вам не разрешено выбирать более 3 полей».

Я почти на месте, но последний флажок все еще проверяется иЯ не хочу этого, я хочу, чтобы это было снято с появлением сообщения.

Как мне это сделать:

var productList = $('.prod-list'),
    checkBox = productList.find('input[type="checkbox"]'),
    compareList = $('.compare-list ul');

productList.delegate('input[type="checkbox"]', 'click', function () {
  var thisElem = $(this),
      thisData = thisElem.data('compare'),
      thisImg = thisElem.closest('li').find('img'),
      thisImgSrc = thisImg.attr('src'),
      thisImgAlt = thisImg.attr('alt');

  if (thisElem.is(':checked')) {
    if ($('input:checked').length < 4) {

        compareList.append('<li data-comparing="' + thisData + '"><img src="' + thisImgSrc + '" alt="'+ thisImgAlt +'" /><li>');

    } else {
        $('input:checked').eq(2).attr('checked', false);
        alert('You\'re not allowed to choose more than 3 boxes');
    }
  } else {
    var compareListItem = compareList.find('li');

    for (var i = 0, max = compareListItem.length; i < max; i++) {
        var thisCompItem = $(compareListItem[i]),
            comparingData = thisCompItem.data('comparing');

        if (thisData === comparingData) {
            thisCompItem.remove();
        }
    }

  }

});

Ответы [ 2 ]

9 голосов
/ 09 ноября 2011

Возможно, я неправильно понял вопрос ... см. Мой комментарий.

Чтобы предотвратить выбор, вы можете вызвать event.preventDefault() и определить обработчик с параметром event.

$('input[type="checkbox"]').click(function(event) {
    if (this.checked && $('input:checked').length > 3) {
        event.preventDefault();
        alert('You\'re not allowed to choose more than 3 boxes');
    }
});

DEMO

В качестве альтернативы, установите this.checked в false.Это даже не позволит браузеру отображать галочку.

DEMO

0 голосов
/ 05 декабря 2015

одна функция jquery для нескольких форм

<form>
 <input  type="checkbox" name="seg"><br>
 <input  type="checkbox" name="seg" ><br>
 <input  type="checkbox" name="seg"><br>
 <input  type="checkbox" name="seg"><br>
</form>

<br><br><br><br><br>

<form>
  <input  type="checkbox" name="seg1"><br>
 <input  type="checkbox" name="seg1" ><br>
 <input type="checkbox" name="seg1"><br>
 <input type="checkbox" name="seg1"><br>
</form>

$('input[type="checkbox"]').click(function(event) {
  if ($("input[name= "+ this.name +"]:checked").length > 3) {
        event.preventDefault();
        alert('You\'re not allowed to choose more than 3 boxes');
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...