Помогите с checkbox и javascript
19 сообщений
#16 лет назад

Доброго всем времени суток, хочу попросить вашей помощи в следующем:
Есть форма, в ней есть несколько checkbox'ов, я хочу сделать так, чтобы при включенном главном чекбоксе (Который в первой колонке) отмечались все чекбоксы, а при снятии одного из Чекбокс 1-4, снимался и главный, и при выделении всех чекбоксов отмечался и главный, а при снятии главного чекбоса снимались все.
<input name="main" type="checkbox" value="ok">
<input name="sb" type="checkbox" value="1">
<input name="sb" type="checkbox" value="2">
<input name="sb" type="checkbox" value="3">
<input name="sb" type="checkbox" value="4">
Я знаю, что можно сделать на javascript, но я в нем не силен. Может у кого-то есть свои заготовки или может кто-то видел подобное в интернете дайте ссылку плз. Заранее спасибо.
94 сообщения
#16 лет назад
Зайдите в почту на майл или яндекс - там все это реализовано - посмотрите в html коде.
9 сообщений
#16 лет назад
Решение в лоб:вначале добавляем чекбоксам иды и обработчики событий:
<input name="main" type="checkbox" value="ok" id="main" onclick="do_all(this);">
<input name="sb" type="checkbox" value="1" id='sb1' onclick="do_one(this);">
<input name="sb" type="checkbox" value="2" id='sb2' onclick="do_one(this);">
<input name="sb" type="checkbox" value="3" id='sb3' onclick="do_one(this);">
<input name="sb" type="checkbox" value="4" id='sb4' onclick="do_one(this);">
а затем сами функции:
<script type="text/javascript">
function do_all(source)
{
for(i=0;i<4;i++)
{
document.getElementById('sb'+(i+1)).checked=source.checked;
}
}
function do_one(source)
{
if(!source.checked)
{
document.getElementById('main').checked=false;
}
else
{
set_checked=true;
for(i=0;i<4;i++)
{
if(!document.getElementById('sb'+(i+1)).checked)
{
set_checked=false;
break;
}
}
if(set_checked)
{
document.getElementById('main').checked=true;
}
}
}
</script>
Можно сделать красивее, заморачиваться не стал.
19 сообщений
#16 лет назад
Спасибо inpego за пример. Немного исправил, сделал подсчет количества элементов sb, сделал выборку по sb вместо id. Работает на ура. Спасибо еще раз.