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

Автор темы: Zaxap
ID темы: 2425
Информация:
Тема содержит 7 сообщения, была просмотрена 5907 раз.
Просмотр темы
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.012 секунд, используя GeSHi 1.0.8.10


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

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

PolarLab - вход для подопытных
 
Web
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.003 секунд, используя GeSHi 1.0.8.10

Зло не дремлет, а я добрый...
 
Polarfox
С жк проще.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме

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

PolarLab - вход для подопытных
 
Web
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.003 секунд, используя GeSHi 1.0.8.10


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

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

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
Как перейти с http на https  →  Вопросы новичков 30 / 21414 24.10.2019 18:45
Как правильно сделать ЧПУ и переиндексировать сайт?  →  Моды 4 / 4658 24.10.2019 17:38
Посоветуйте JS-слайдер чтобы фотки JPG сменялись как в GIF-анимации  →  Плагины 2 / 2398 20.10.2019 13:34
Перешел на HttpS - Как теперь удалить Http?!  →  Вопросы новичков 1 / 504 18.06.2019 13:19
как правильно сделать phpmailer на utf-8?  →  Ошибки, баги 5 / 609 09.06.2019 14:15
Работа разных тем оформления при разных разрешениях  →  HTML и CSS 2 / 328 05.03.2019 09:08
Как определить необходимые мощности хостинга для группы сайтов с определённой посещалкой?  →  Хостинг 0 / 987 20.02.2019 20:46
Сделать ответыт на фриланс биржах на CURL - как?  →  PHP 1 / 831 05.11.2018 12:43
Возможно ли при помощи тестов (вопросов) проверить совместимость М и Ж?  →  Разное 2 / 1382 04.11.2018 17:24
Ваш топ 5 список ежедневных сайтов  →  Флуд 16 / 6540 07.10.2018 10:58
Топ 5 пользователей форума
Alex Alex (1,211)   Zaxap Zaxap (1,090)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)