Автоматическое выделение 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 не выделялся. Заранее благодарен за помощь. |
Делайте сразу 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, время: 16:52. |