Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как заблокировать checkbox кроме выделенных (https://javascript.ru/forum/events/28898-kak-zablokirovat-checkbox-krome-vydelennykh.html)

YCsys 06.06.2012 16:13

Как заблокировать checkbox кроме выделенных
 
Как заблокировать checkbox кроме выделенных :help:
Вот эта функция блокирует все чекбоксы после того как выбраны 3 из них.

$('#relis, .cchl').live('click',function(){
//$('#relis, .cchl').click(function(){
  var kol = $('input:checkbox:checked').length;
  if(kol == 3){
$('#relis, .cchl').prop("disabled", true);
  }
});


у меня все "checkbox" имеют класс "cchl"
вот эта строка:
$('#relis, .cchl').prop("disabled", true);

блокирует все, но при отправки формы, все checkbox не записуються в переменную в связи с тем что они все "disabled".

Мне нужно что бы блокировались все кроме уже отмеченных.
И по возможности, чтобы при снятии отмеченного остальные розблокировались.

beard 06.06.2012 16:25

нужно сделать выборку чекбоксов которые не выбраны и установит им атрибут
.attr("disabled", true);

YCsys 06.06.2012 16:34

а как сделать выборку чекбоксов которые не выбраны?

YCsys 06.06.2012 16:48

Вуаля решил сразу все проблемы:

$('#relis, .cchl').live('click',function(){
//$('#relis, .cchl').click(function(){
    var kol = $('input:checkbox:checked').length;
        if(kol < 3){ // если выбранных меньше 3
	$(':checkbox').prop("disabled", false); // то розблокирую 
    }
    if(kol == 3){ // если выбраны 3 чекбокса
	$(':checkbox').prop("disabled", true); // сначала блокирую все
	$(':checkbox:checked').prop("disabled", false); // а потом разблокирую выбранные
    }
});

beard 06.06.2012 17:07

нестандартный подход :)

Я бы наверно сделал так
$("input[type=checkbox]").filter(":not(':checked')")

YCsys 06.06.2012 17:34

Цитата:

Сообщение от beard (Сообщение 179462)
нестандартный подход :)

Я бы наверно сделал так
$("input[type=checkbox]").filter(":not(':checked')")

Спасибо:)
:write:


Часовой пояс GMT +3, время: 01:43.