Checkbox (выбрать все, снять выделение)
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Checkbox (выбрать все, снять выделение) Expand / Collapse
Автор
Сообщение
04.12.2006 11:27
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 28.12.2007 15:30
Сообщ.: 245, Visits: 2 102
Как в сделать так чтобы нажатием на одну ссылку или кнопку были отмечены все чекбоксы с одним именем и на оборот сняты все галочки.
Сообщ. #908388
04.12.2006 12:12
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 26.10.2007 16:04
Сообщ.: 159, Visits: 1 042
Можно вот так например:

< form name=frm1 >
< input type=checkbox name=chk1 >< br >
< input type=checkbox name=chk1 >< br >
< input type=checkbox name=chk1 >< br >
< input type=checkbox name=chk1 >< br >
< input type=checkbox name=chk1 >< br >
< input type=checkbox name=chk1 >< br >
< input type=button onclick='selChk("")' value='Отменить' >< br >
< input type=button onclick='selChk("checked")' value='Выделить' >< br >
< /form >
< script >
function selChk(v){
 for (var i = 0; i < (document.frm1.chk1.length); i++) {
  document.frm1.chk1[i].checked = v
 }
}
< /script >

Сообщ. #908399
04.12.2006 18:08
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.04.2007 11:57
Сообщ.: 77, Visits: 97
как написал бэзил мне недавно имена и ИД лучше делать уникальными так как это стандарт в веб консорциуме. То есть для себя можно, конечно, и так сделать. Но вообще лучше по другому, через классы

<input type='checkbox' class='toCheck'>

Чтобы чекнуть вообще все чекбоксы на странице:

var cheks=window.document.body.getElementsByTagName("input");
 for (var i=cheks.length-1; i>=0; i--)
 {
  if ((cheks[i].getAttribute("className", 1)=="toCheck")and(cheks[i].getAttribute("type", 1)=="checkbox"))
  {
   cheks[i].checked=v;
  }
 }

Если есть форма в пределах которой мы это делаем то:

var cheks=window.document.getElementById("<Имя формы>").getElementsByTagName("input");
 for (var i=cheks.length-1; i>=0; i--)
 {
  if ((cheks[i].getAttribute("className", 1)=="toCheck")and(cheks[i].getAttribute("type", 1)=="checkbox"))
  {
   cheks[i].checked=v;
  }
 }

этот код может содержать мелкие ошибки, я его не проверял - писал теоретически.

Сообщ. #908439
04.12.2006 18:18
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
DarkSet (04.12.2006)
как написал бэзил мне недавно имена и ИД лучше делать уникальными так как это стандарт в веб консорциуме.

Поправка :) Уникальными должны быть только id.

Сообщ. #908442
05.12.2006 10:25
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.04.2007 11:57
Сообщ.: 77, Visits: 97
А, ну да, у меня имена те теги просто не поддерживали что я использовал :)

Но все равно чекбоксам давать одинаковые имена бессмысленно - как потом разбирать результат?

Сообщ. #908464
05.12.2006 11:11
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 26.10.2007 16:04
Сообщ.: 159, Visits: 1 042
DarkSet (05.12.2006)
А, ну да, у меня имена те теги просто не поддерживали что я использовал :)

Но все равно чекбоксам давать одинаковые имена бессмысленно - как потом разбирать результат?

смотря для чего, допустим есть форма со списоком вопросов и после поста значения проще получить в цикле - т.е. кода будет на 3 строчки всего

Сообщ. #908471
06.12.2006 9:50
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 28.12.2007 15:30
Сообщ.: 245, Visits: 2 102
У меня ситуация такая

< form name=frm1 >< input type=checkbox name=chk1[] >< br >< input type=checkbox name=chk1[] >< br >< input type=checkbox name=chk1[]  >< br >< input type=checkbox name=chk1[] >< br >< input type=checkbox name=chk1[]  >< br >< input type=checkbox name=chk1[]  >< br >
< input type=button onclick='selChk("")' value='Отменить' >
< input type=button onclick='selChk("checked")' value='Выделить' >
< br >< /form >
< script >function selChk(v)
{
for (var i = 0; i < (document.frm1.chk1.length); i++)

document.frm1.chk1[i].checked = v
}
}

тоесть формой передается не одно значение, а целый масив. Как быть в этой ситуаци?

Еще вопрос

Как проверить есть ли хотябы один отмеченый чекбокс?
< /script >

Сообщ. #908540
06.12.2006 13:14
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.04.2007 11:57
Сообщ.: 77, Visits: 97
В этом случае лучше вариант предложенный Серым.

Проверить - елементарно, проходишь все елементы массива и проверяешь есть ли хоть один чекнутый, то есть:

var cksM=window.document.getElementsByName("chk1");
var j=0;
for (var i=cksM.length-1; i>=0; i--)
{
   if (cksM[i].checked="v")
   {
     j=1;
   }
}

после этого если был хоть один чекнутый елемент будет j=1, можно поставить j+=1 тогда будем иметь количество чекнутых елементов. Можно поставть выход из цикла при нахождении первого же чекнутого елемента, дописать break после j=1

Сообщ. #908550
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl