Cherka Trova
Всем доброго времени суток, особенно тем, кто знает JS и не любит мудрствовать лукаво.
В общем, проблема простенькая. Есть форма, в форме поле ввода строки и n-ое число чекбоксов (заранее известное и строго определенное). Первый из этих чекбоксов, как вы уже, возможно, догадались, носит гордую табличку "Отметить все". Так вот. Нужно как-то скрипт обработки этого чекбокса придумать, т.е. по нажатию на него присваивать свойству checked всех остальных чекбоксов соответствующее свойство данного.
Есть в сети скриптик, который советует для этого ввести параметр name для всех чекбоксов одинаковым в виде массива, скажем list[] и через обращение напрямую по параметру name и индексу элемента менять его состояние. Вот таким образом:

function checkAll(oForm, cbName, checked)
{
for (var i=0; i < oForm[cbName].length; i++) oForm[cbName][i].checked = checked;
}


Но все дело в том, что когда я начинаю передавать данные из формы в обработчик, учитываются только отмеченные поля по количество, безотносительно конкретного номера по порядку в форме. Поэтому пришлось разграничить элементы введя в поле name соответственно list[1], list[2] и т.д.

При этом вышеописанный скрипт работать отчего-то перестал.

Поскольку в JS я, как выясняется, не очень силен, то попробовал присвоить чекбоксам параметр id соответствующего номера и пройтись по ним при помощи document.getElementById(i), но результат нулевой.

Помогите, пожалуйста, правильно составить этот скрипт, желательно что-то максимально простое, как приведенный пример))
Заранее спасибо.

@темы: JS, Вопросы

Комментарии
19.11.2008 в 11:15

Sanctus Satanas
for (var i = 0; i < 666; i++) document.form13.elements["list[" + i + "]"].checked = true;

Может, не очень элегантно, но зато работает.
19.11.2008 в 11:32

Cherka Trova
Спасибо)) действительно более чем элегантно)) Muchas gracias))
19.11.2008 в 15:09

а ещё прикольно юзать новые технологии в лице jQuery - anton.shevchuk.name/javasсript/jquery-for-begin...

просто чтобы научиться, сейчас много где используется.
19.11.2008 в 15:40

Cherka Trova
Спасибо за ссылку, но в данном случае меня интересовало быстрое и элегантное работоспособное решение)) Но ваш материал обязательно изучу))
28.11.2008 в 00:37

Я не бог, я так низко не опускаюсь.
сделать class для них или убрать в див
Див ид="такиетоинпут"
инпут
инпут
...
инпут
/див

var div=document.getElementById('takietoinput');
for (var id in div.childNodes)
if (div.childNodes[id].tagName=='INPUT')
div.childNodes[id].checked=this.checked
28.11.2008 в 00:45

Sanctus Satanas
lugavchik
Мсье знает толк в извращениях...

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail