Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 121
1

Массовый выбор CheckBox

31.07.2013, 17:54. Показов 3020. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть такая проблема. Задача - сделать массовый выбор чекбоксов при нажатии на одном.
Такой обработчик события:
Javascript
1
2
3
4
5
6
7
8
  if(!$(chbx).is(":checked"))
  {
    $(".checkbox").attr("checked", false);
  }
  else
  {
    $(".checkbox").attr("checked", true);
  }
При первом нажатии оно выделает все, при втором - убирает выбор чекбоксов. Но при третьем и тд визуально галка не ставится на чекбоксе, хотя в атрибутах и показывает "checked".

В чем ошибка обработчика ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2013, 17:54
Ответы с готовыми решениями:

Выбор checkbox
Добрый день, столкнулся с проблемой выбора checkbox. Есть группа боксов: <input type="checkbox"...

Checkbox, выбор и отмена
И снова "здрасте". Суть проблемы: Имеется много комментариев выводимых на страницу со структурой:...

Выбор отмеченных CheckBox-ов
есть форма состоящая из чекбокосов <input type="checkbox" name="option" points="0"...

Выбор значений в Multiple CheckBox
<select id="delicts0652c2aca-fcf9-44fa-8a05-7583c485187c" class="multi checkDelicts" name="delicts"...

7
1452 / 360 / 61
Регистрация: 03.04.2010
Сообщений: 2,096
31.07.2013, 18:12 2
Можно попробовать так

Javascript
1
2
3
4
5
6
7
8
if(!$(chbx).is(":checked"))
  {
    $(".checkbox").each(function() { this.checked = false; });
  }
  else
  {
    $(".checkbox").each(function() { this.checked = true; });
  }
Добавлено через 4 минуты
Кстати, похоже у Вас ошибка в логике кода.
если чекед

Javascript
1
2
3
4
5
6
7
8
if(!$(chbx).is(":checked")) // Если чекед отключен
  {
    $(".checkbox").attr("checked", false); // Тогда отключить его
  }
  else // Иначе
  {
    $(".checkbox").attr("checked", true); // Включить
  }
Попробуйте так

Javascript
1
2
3
4
5
6
7
8
if($(chbx).is(":checked"))
  {
    $(".checkbox").attr("checked", false);
  }
  else // Иначе
  {
    $(".checkbox").attr("checked", true);
  }
0
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 121
31.07.2013, 19:23  [ТС] 3
Vlad_IT

кстати это полный бред

мой вариант
Javascript
1
2
3
4
5
6
7
8
if(!$(chbx).is(":checked")) // Если чекед отключен
  {
    $(".checkbox").attr("checked", false); // Тогда отключить его //(все элементы с классом .checkbox)
  }
  else // Иначе //(если чекбокс включен)
  {
    $(".checkbox").attr("checked", true); // Включить //(включить все елементы с классом checkbox)
  }
но сути проблемы это не меняет - все равно не работает
0
1452 / 360 / 61
Регистрация: 03.04.2010
Сообщений: 2,096
31.07.2013, 20:13 4
Тогда вот

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="http://yandex.st/jquery/2.0.3/jquery.min.js"></script>
    <title></title>
</head>
<body>
    <input type="checkbox" id="main_check" />
 
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
 
    <script type="text/javascript">
 
        jQuery('#main_check').click(function()
        {
            if(jQuery(this).is(':checked'))
                jQuery('.checkbox'). prop('checked', true);
            else jQuery('.checkbox').prop('checked', false);
        });
    </script>
</body>
</html>
2
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 121
31.07.2013, 20:53  [ТС] 5
спасибо за ответ, воспользовался вашим алгоритмом и все работает. Не пойму, почему мой алгоритм не хочет работать
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="http://yandex.st/jquery/2.0.3/jquery.min.js"></script>
    <title></title>
    <script>
      
    </script>
</head>
<body>
    <input type="checkbox" id="main_check" onclick="checkAllChbx(this)"/>Main
 <div style="border: 1px solid black">
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
    <input type="checkbox" id="main_check" class="checkbox"/>
 </div>
    <script type="text/javascript">
 
      function checkAllChbx(chbx)
      {  
        if($(chbx).is(":checked"))
        {
          $(".checkbox").each(function(){$(this).attr("checked", true);});
        }
        else
        {
          $(".checkbox").each(function(){$(this).attr("checked", false);});
        }
      }
 /*
        $('#main_check').click(function()
        {
            if(jQuery(this).is(':checked'))
                jQuery('.checkbox'). prop('checked', true);
            else jQuery('.checkbox').prop('checked', false);
        });
*/   
    </script>
</body>
</html>
0
0 / 0 / 1
Регистрация: 15.01.2014
Сообщений: 32
21.04.2015, 14:32 6
День добрый! Пришлось поднять старую тему, дабы не плодить новых.

В общем-то код, который предложил Vlad_IT, корректно работает, в отличие от того, что нашел в сети. Но возникла необходимость его доделать.
Нужно сделать так, чтобы при отключении хотя бы одного чекбокса, главный тоже отключался.

Дело в том, что у меня есть двухуровневый каталог товаров, и, соответственно, поиск по нему. Если не отключить общий чекбокс - то нет никакого толку от того, что дочерние чекбоксы неактивны. Поиск всё равно будет производиться по всему каталогу, а не по выделенным разделам.

Надеюсь, правильно объяснил.

Подскажите, что нужно дописать?

Массовый выбор CheckBox
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
21.04.2015, 14:56 7

Не по теме:

axle_vega, лучше было бы создать новую тему, т.к. ваш вопрос может и имеет схожесть с этим, но всё-таки отличается по смыслу. Ну и хорошо бы показывать структуру HTML

Вот пример реализации.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<ul>
    <li><input type="checkbox" class="main_check" />
        <ul>
            <li><input type="checkbox" class="checkbox" /></li>
            <li><input type="checkbox" class="checkbox" /></li>
            <li><input type="checkbox" class="checkbox" /></li>
        </ul>
    </li>
    <li><input type="checkbox" class="main_check" />
        <ul>
            <li><input type="checkbox" class="checkbox" /></li>
            <li><input type="checkbox" class="checkbox" /></li>
            <li><input type="checkbox" class="checkbox" /></li>
        </ul>
    </li>
</ul>
Javascript
1
2
3
4
5
6
7
8
9
10
$('.main_check').on('change',function () {
    var $that = $(this);
    $that.next('ul').find(':checkbox').prop('checked', $that.prop('checked'));
});
$('.checkbox').on('change', function(){
    var $that = $(this),
        ul = $that.closest('ul'),
        main = ul.prev('.main_check');
    main.prop('checked', $(':checkbox',ul).length == $(':checkbox:checked',ul).length);
});
Цитата Сообщение от axle_vega Посмотреть сообщение
код, который предложил Vlad_IT, корректно работает
И при всём этом, такой ответ заслуживает минус (жирный). Почему? Потому, что допущена грубая ошибка. "В пределах одной страницы, не может быть два и более элемента с одинаковым id". И это даже не обсуждается. Во-вторых, событие, для таких случаев, желательно устанавливать "change", а не "click".
1
0 / 0 / 1
Регистрация: 15.01.2014
Сообщений: 32
21.04.2015, 15:01 8
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Вот пример реализации.
Спасибо! Работает точно так, как мне нужно! Жирный плюс за оперативный ответ

В следующий раз постараюсь точно и правильно оформить вопрос )
0
21.04.2015, 15:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2015, 15:01
Помогаю со студенческими работами здесь

выбор CheckBox
Помогите разобраться с CheckBox... В общем есть 4 CheckBox размещенных на GroupBox. Один из них...

Случайный выбор CheckBox
Здравствуйте. Снова нужна помощь) Есть форма пациента. При выделении CheckBox &quot;Пониженное АД&quot; и...

выбор в реалтайме (checkbox)
появилась потребность в том, чтобы можно было выбирать несколько значений, и они обрабатывались в...

выбор в реалтайме (checkbox)
появилась потребность в том, чтобы можно было выбирать несколько значений, и они обрабатывались в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru