Забыли пароль?
Запросите новый здесь.

Автор темы: Zaxap
ID темы: 2425
Информация:
Тема содержит 7 сообщения, была просмотрена 7062 раз.
Просмотр темы
PHP-Fusion Russia » Веб-разработка » Javascript, ajax, jquery
 Распечатать тему
Список с checkbox. Как отметить дочерний ceckbox при выборе родительского?
Zaxap
Загрузить источник  GeSHi: HTML
  1. <ul>
  2. <li class="file">
  3. <input type="checkbox" id="1">
  4. <label for="1">1</label>
  5. <ul>
  6. <li>
  7. <input type="checkbox" id="1_2">
  8. <label for="1_2">1_2</label>
  9. </li>
  10. <li>
  11. <input type="checkbox" id="1_3">
  12. <label for="1_3">1_3</label>
  13. <ul>
  14. <li>
  15. <input type="radio" name="1_3" id="1_3_1">
  16. <label for="1_3_1">1_3_1</label>
  17. </li>
  18. <li>
  19. <input name="1_3" type="radio" id="1_3_2" value="1_3_2">
  20. <label for="1_3_2">1_3_2</label>
  21. </li>
  22. <li>
  23. <input name="1_3" type="radio" id="1_3_3" value="1_3_3">
  24. <label for="1_3_3">1_3_3</label>
  25. </li>
  26. <li>
  27. <input type="checkbox" disabled id="1_3_yes" value="1_3_yes" checked>
  28. <label for="1_3_yes">1_3_yes</label>
  29. </li>
  30. </ul>
  31. </li>
  32. <li>
  33. <input type="checkbox" id="1_4">
  34. <label for="1_4">1_4</label>
  35. </li>
  36. </ul>
  37. </li>
  38. </ul>
  39. </form>
Добавлено за 0.008 секунд, используя GeSHi 1.0.8.10


Имеется такого вида список. Необходимо при выборе-снятии любого checkbox'а выбрать/снять галочку с дочерних checkbox внутри по списку (именно с дочерних, а не с внучатых и прочих)...
Как это можно сделать на чистом js?.. именно такого рода "универсальную" функцию... если указывать id и т.п. - это и я могу...;)
Зло не дремлет, а я добрый...
 
Polarfox
Прикрепи им класс, и чекай все боксы такого-то класса.
Либо - все дочерние обходи и тоже чекай.

Фреймворки все сделают, а вручную - ну идею ты понял.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Zaxap
PolarFox, ну я уже сделал эту шнягу (сейчас скину код):

Загрузить источник  GeSHi: Javascript
  1. var checkbox = document.getElementsByTagName('li');
  2. for(var i = 0; i < checkbox.length; i++) {
  3. if(checkbox[i].getElementsByTagName('ul')[0])
  4. checkbox[i].getElementsByTagName('input')[0].addEventListener('click',redirect,false);
  5. }
  6. function redirect(){
  7. var $this = this.parentNode.getElementsByTagName('ul')[0];
  8. (this.checked) ? $this.style.display='inherit' : $this.style.display='none';
  9. }
Добавлено за 0.001 секунд, используя GeSHi 1.0.8.10

Зло не дремлет, а я добрый...
 
Polarfox
С жк проще.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Zaxap
PolarFox, ну jq весит на килобайт, так, минимум 60 больше... (а это еще и в сжатом виде)...
у меня там свои сокращалки стандартных функций...
просто тут сделал стандарт, чтобы всем было понятно, всем можно было использовать)
Зло не дремлет, а я добрый...
 
Polarfox
В том и дело что там куча корректировок чтоб все браузеры понимали, в тч старые, редкие и кривые.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Zaxap
PolarFox, по-моему, это слишком простой код - его должны понять все, даже браузеры... это ведь не Ajax-запрос, не отправка e-mail путем js... - это просто переход по DOM-дереву...
Поправьте, если ошибаюсь :)
---
Глянул поддерживаемость браузерами: действительно, addEventListener, например (почему "например"... именно он)) не поддерживается IE ниже 9... ок, будем искать)))
---
Загрузить источник  GeSHi: Javascript
  1. function addClickEvent(elem, func)
  2. (element.addEventListener) ? return elem.addEventListener(click, func, false) : return elem.attachEvent('onclick', func);
  3.  
  4. var checkbox = document.getElementsByTagName('li');
  5. for(var i = 0; i < checkbox.length; i++) {
  6. if(checkbox<i>.getElementsByTagName('ul')[0])
  7. addClickEvent(checkbox[i].getElementsByTagName('input')[0], redirect);
  8. }
  9. function redirect(){
  10. var $this = this.parentNode.getElementsByTagName('ul')[0];
  11. (this.checked) ? $this.style.display='inherit' : $this.style.display='none';
  12. }
Добавлено за 0.001 секунд, используя GeSHi 1.0.8.10


Вот так вот должно поддерживаться [i]всеми браузерами...
Изменил(а) Zaxap, 08.02.2015 10:17
Зло не дремлет, а я добрый...
 

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
Галочка согласия при отправке формы  →  HTML и CSS 1 / 502 04.02.2024 11:36
в PHP 7.4 нельзя вставлять пустое значение в `id` как раньше  →  Пожелания и предложения 4 / 1083 19.12.2023 03:32
нужны ли на сайте "Закладки" и "История посещений", как в браузере?  →  Пожелания и предложения 4 / 844 11.08.2023 15:56
Где взять список районов по областям для разных стран?  →  Пожелания и предложения 0 / 1538 10.08.2023 12:44
Как сделать микроразметку на сайте?  →  PHP 1 / 3378 22.07.2021 06:39
Ошибка при создании панели  →  Ошибки, баги 6 / 1722 29.01.2021 21:58
Почему при нажатии на кнопку срабатывает проверка полей?  →  HTML и CSS 1 / 4068 05.11.2020 10:33
Как вебмастеру сформулировали УТП для создания сайтов на PHP-Fusion?  →  Пожелания и предложения 1 / 7310 25.07.2020 03:46
SEO-оптимизация. дубли страниц в PHP-Fusion - где искать и как избавиться?  →  Ошибки, баги 0 / 5122 19.06.2020 17:06
Как вывести все данные из таблицы, за исключением администраторов  →  Плагины 3 / 5334 24.02.2020 15:59
Топ 5 пользователей форума
Zaxap Zaxap (1,090)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)   SchreiBear SchreiBear (625)