2016-11-28 1 views
0

У меня есть немного JQuery, что позволяет мне ограничить количество флажков пользователь может проверить на странице:Предельные флажков, но только тех, кто недавно проверил

$('input[type=checkbox]').on('change', function (e) { 
    if ($('input[type=checkbox]:checked').length > 3) { 
     $(this).prop('checked', false); 
     alert("allowed only 3"); 
    } 
}); 

Но, пользователь ограничен «х» число один раз в день. Поэтому они приходят к форме, представляют свой лимит (3 проверены). Они возвращаются на следующий день, у меня есть 3 проверил, что были со вчерашнего дня, но установить для инвалидов:

checked="checked" disabled="disabled" disabled/> 

Есть ли способ, чтобы изменить мой, если заявление, чтобы сказать «ввод [тип = Флажок]: проверен», но не если отключено или нет, если class = "disabled", поэтому они не учитывают дневной лимит?

+0

Где вы хранения ранее проверенные флажки? –

+0

Вы проверяете эту сторону сервера? Эти значения могут быть легко изменены в браузере пользователя. – circusdei

ответ

2

Вы можете использовать метод jQuery not() для этого, как описано ниже.

$('input[type=checkbox]').on('change', function (e) { 
    if ($('input[type=checkbox]:checked').not(':disabled').length > 3) { 
     $(this).prop('checked', false); 
     alert("allowed only 3"); 
    } 
}); 
2

Вы можете использовать :enabled

$('input[type=checkbox]').on('change', function (e) { 
    if ($('input[type=checkbox]:enabled:checked').length > 3) { 
     $(this).prop('checked', false); 
     alert("allowed only 3"); 
    } 
}); 
+0

Есть ли преимущество перед:: enabled: checked "vs.": checked '). Not (': disabled ') "? – Steve

+0

@Steve: простота? Читаемость? –

+1

https://api.jquery.com/enabled-selector/ – BenG