Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Автоматическое выделение checkbox (https://javascript.ru/forum/misc/58054-avtomaticheskoe-vydelenie-checkbox.html)

oopros 02.09.2015 12:15

Автоматическое выделение checkbox
 
Есть скрипт, который делает автоматические выделение всех инпутов, когда отмечен первый.

<script type="text/javascript">
                                function checkAll(obj) {
                                    'use strict';
                                    // Получаем NodeList дочерних элементов input формы: 
                                    var items = obj.form.getElementsByTagName("input"),
                                            len, i;
                                    // Здесь, увы цикл по элементам формы:
                                    for (i = 0, len = items.length; i < len; i += 1) {
                                        // Если текущий элемент является чекбоксом...
                                        if (items.item(i).type && items.item(i).type === "checkbox") {
                                            // Дальше логика простая: если checkbox "Выбрать всё" - отмечен            
                                            if (obj.checked) {
                                                // Отмечаем все чекбоксы...
                                                items.item(i).checked = true;
                                            } else {
                                                // Иначе снимаем отметки со всех чекбоксов:
                                                items.item(i).checked = false;
                                            }
                                        }
                                    }
                                }
                                </script>



<input type="checkbox" value="all" name='one' onClick="checkAll(this);"  /> 
<input type="checkbox" name="time[1]"  /> 
<input type="checkbox" name="time[2]"   /> 
<input type="checkbox" name="time[3]"   /> 




<input type="checkbox" name='name'  />



Но мне нужно чтобы выделиляись только checkbox, с именами time[], а последний checkbox с именем name не выделялся.

Заранее благодарен за помощь.

BETEPAH 02.09.2015 13:16

Делайте сразу NodeList нужных элементов в 5 строке и отпадет нужда в проверке (строка 10) как бонус :)
Давно уже есть метод для этого document.querySelectorAll('selector');
<input type="checkbox" value="all" name='one' onchange="checkAll(this);"  />
<input type="checkbox" name="time[1]"  />
<input type="checkbox" name="time[2]"   />
<input type="checkbox" name="time[3]"   />
<input type="checkbox" name='name'  />

<script>
    function checkAll(obj) {
		var nodes = document.querySelectorAll('input[name^=time'); 
		[].forEach.call(nodes, function(el) {
			el.checked = obj.checked;
		});
    }
</script>


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