Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.02.2012, 19:58
Интересующийся
Отправить личное сообщение для DimDimos Посмотреть профиль Найти все сообщения от DimDimos
 
Регистрация: 21.08.2010
Сообщений: 10

Jquery checkbox checked
Имеем следующую разметку, сгруппированные инпуты по филдсету.
В этом примере одна группа, но на самом деле таких групп гораздо больше.
<fieldset class="standart">
<legend><label><input id="checkboxall1" type="checkbox" value="yes" name="catid1[1]">Вся Москва</label></legend>
<label><input class="checkboxall1" type="checkbox" value="yes" name="catid1[8]">ЮЗАО</label>
<label><input class="checkboxall1" type="checkbox" value="yes" name="catid1[3]">САО</label>
<label><input class="checkboxall1" type="checkbox" value="yes" name="catid1[4]">СВАО</label>
<label><input class="checkboxall1" type="checkbox" value="yes" name="catid1[5]">ВАО</label>
<label><input class="checkboxall1" type="checkbox" value="yes" name="catid1[6]">ЮВАО</label>
</fieldset>

и скрипт
$(document).ready(function(){  
    $("[class^=checkboxall]").click(function(){
        var idp = $(this).attr('class');
        $("." + idp).closest('fieldset').find('input:checkbox:checked').length > 0 ? 
        $("#" + idp).attr('checked','checked') : $("#" + idp).removeAttr('checked','checked');
    });  
});

Идея в том чтобы снимать/устанавливать чекбокс в легенде филдсета в зависимости есть ли хотябы один установленный чекбокс внутри этой группы.
Пример упрощен, но и в этом случае не получается следующая вещь.
При клике внутри группы чекбокс в легенде устанавливается, а при снятии всех чекбоксов группы, в легенде без изменений(тобиш в установленном состоянии).
Если кто может подсказать в чем моя ошибка, буду очень признателен!
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2012, 20:04
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

надо не удалять, а ставить в false значение 'checked'
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2012, 20:21
Интересующийся
Отправить личное сообщение для DimDimos Посмотреть профиль Найти все сообщения от DimDimos
 
Регистрация: 21.08.2010
Сообщений: 10

Сообщение от Rootpassword Посмотреть сообщение
надо не удалять, а ставить в false значение 'checked'
пробовал уже так, к сожалению эффект одинаковый
$("#" + idp).attr('checked','checked') : $("#" + idp).attr('checked',false);

самое интересное что как тест вывожу из условия алерты
alert(1) : alert(2);

все указывает на верность логики, но как только алерты заменяю на вышеуказанный код и всёё не снимается чекбокс из легенды!

Последний раз редактировалось DimDimos, 27.02.2012 в 20:25.
Ответить с цитированием
  #4 (permalink)  
Старый 27.02.2012, 20:36
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

не, логика неверная. У вас при убирании последнего чекбокса один-то активным остается-сам легенд. Вы просто код не убирайте, а дополните алертами.

Последний раз редактировалось Rootpassword, 27.02.2012 в 20:39.
Ответить с цитированием
  #5 (permalink)  
Старый 27.02.2012, 20:50
Интересующийся
Отправить личное сообщение для DimDimos Посмотреть профиль Найти все сообщения от DimDimos
 
Регистрация: 21.08.2010
Сообщений: 10

Сообщение от Rootpassword Посмотреть сообщение
не, логика неверная. У вас при убирании последнего чекбокса один-то активным остается-сам легенд. Вы просто код не убирайте, а дополните алертами.
Да, остается активный в легенде, но я к нему и не обращаюсь так как в условии
$("." + idp).closest('fieldset').find('input:checkbox:checked').length > 0
я обращаюсь к инпутам по классу а в легенде у него не класс а id
Ответить с цитированием
  #6 (permalink)  
Старый 27.02.2012, 20:56
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

$(document).ready(function(){ 
    $("[class^=checkboxall]").click(function(){
        var idp = $(this).attr('class');
if(        $("." + idp).closest('fieldset').find('input:checkbox:checked').length > 0 ){
        $("#" + idp).attr('checked','checked'); alert('check');}else {$("#" + idp).removeAttr('checked','checked'); alert('uncheck');}

alert($("." + idp).closest('fieldset').find('input:checkbox:checked').length);

    }); 
});

Вот первый же клик по чекбоксу выводит нам длину=2. О чем это нам говорит?
Ответить с цитированием
  #7 (permalink)  
Старый 27.02.2012, 20:57
Интересующийся
Отправить личное сообщение для DimDimos Посмотреть профиль Найти все сообщения от DimDimos
 
Регистрация: 21.08.2010
Сообщений: 10

дополнил код алертами, показывает что код переключается но снятия флажка не происходит!
Ответить с цитированием
  #8 (permalink)  
Старый 27.02.2012, 20:59
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Код с alert('uncheck'); не выполняется.
Ответить с цитированием
  #9 (permalink)  
Старый 27.02.2012, 21:18
Интересующийся
Отправить личное сообщение для DimDimos Посмотреть профиль Найти все сообщения от DimDimos
 
Регистрация: 21.08.2010
Сообщений: 10

а понял! да вы правы логика не верная!
в условии с кодом я ставил чекбокс в легенду поэтому и не срабатывал код со снятием галки
а когда вместо кода я ставил алерт 1 и 2 там не было чекеда для легенды по этому второй срабатывал.
Значит задача переработать логику, чтобы считались только инпуты из группы без инпута легенды!
Ответить с цитированием
  #10 (permalink)  
Старый 27.02.2012, 21:27
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

да. по поводу предыдущего- 'checked' =false|true только бывает. Удаляя атрибут, вы ставите дефолт. если у вас в коде по дефолту у чекбока будет выделение, то код не будет работать.
defaultChecked=true логику сломает.

Последний раз редактировалось Rootpassword, 27.02.2012 в 21:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка Checkbox на checked Anton24322224 Общие вопросы Javascript 5 18.10.2012 23:27
Выделить все checkbox с помощью jquery Alyona jQuery 16 17.01.2012 11:44
Checkbox checked Beriagts jQuery 2 08.08.2011 17:21
checkbox + JS + JQuery Fancybox natariga Общие вопросы Javascript 1 29.05.2011 22:08
Функция disable для нескольких checkbox allforweb Элементы интерфейса 4 19.12.2010 17:51