проверка, если несколько флажков отмечены с помощью пользовательского атрибута в jquery

0

У меня есть несколько групп таких флажков:

<input type="checkbox" class="correction_check" product_id="3" defect_col="Qty">
<input type="checkbox" class="correction_check" product_id="3" defect_col="Exp">
<input type="checkbox" class="correction_check" product_id="3" defect_col="Bat">

<input type="checkbox" class="correction_check" product_id="4" defect_col="Qty">
<input type="checkbox" class="correction_check" product_id="4" defect_col="Bat">

Группа флажков дифференцируется product_id.

Могу ли я сделать что-то вроде этого?

$('.correction_check').click(function(){
    //check if all other check boxes having same product_id as $(this) are checked and do some action
});
  • 0
    использование атрибута 'name' для группировки различных входных данных является более семантическим
  • 2
    @Mike86 Mike86 Не для чекбоксов, это предотвратит отправку различных входных данных в форме.
Показать ещё 1 комментарий
Теги:
checkbox

2 ответа

1
Лучший ответ

Вы можете проверить, проверяются ли все остальные флажки с одним и тем же product_id следующим образом:

$('.correction_check').click(function(){
    var otherAreChecked = $('.correction_check[product_id='+$(this).attr('product_id')+']')
       .not(this).not(':checked').length===0;
    // do action
});

Идея состоит в том, чтобы подсчитать те, которые не были проверены: этот счет должен быть 0.

демонстрация

Обратите внимание, что если вы хотите узнать, отмечены ли все флажки с одинаковым идентификатором продукта (а не только "другие"), вам просто нужно удалить .not(this) из моего кода

  • 0
    Чистый и прекрасный ответ ...
0

Попробуй это:

$(".correction_check").change(function(){
    var id = $(this).attr("product_id");
    $(".correction_check[product_id='"+id+"']:checked").each(function(){
        //do action
    });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню