Управление чекбоксами

Задача: Выделить все чекбоксы, при нажатии на первый, и снятие выделения, при повторном нажатии.

Казалось бы ничего сложного, но большинство найденных мною скриптов идут с использованием свойства name чекбокса. В моем случае name изменять было нельзя. Так что пришлось немного подумать над созданием своего скрипта.

Форма простая, состоит только из чекбоксов, поэтому проверять каждый элемент на тип нет необходимости.

Вот что получилось:


<script type="text/javascript">

function checkAll(form)
{
  if(form.elements[0].checked == true)
  {
    for (i = 1, n = form.elements.length; i < n; i++)
    {
      form.elements[i].checked = true;
    }
  }
  else
  {
    for (i = 1, n = form.elements.length; i < n; i++)
    {
      form.elements[i].checked = form.elements[i].defaultChecked;
    }
  }
}

</script>

//форма 
<form name="checkform" method="post" action="">
<input type="checkbox" name="checker" onclick="checkAll(this.form);" /> chekALL
<input type="checkbox" name="1" /> 1
<input type="checkbox" checked name="2" /> 3
<input type="checkbox" name="3" /> 4
</form>

По клику на первый чекбокс происходит его активация и вызов функции checkAll(), в которой идет проверка состояния этого чекбокса:

form.elements[0].checked

Если он активируется, то в цикле происходит активация всех остальных чекбоксов формы:

form.elements[i].checked = true

Если же первый чекбокс деактивируется, то чекбоксам возращается их старое значение:

<code>form.elements[i].checked = form.elements[i].defaultChecked

Полезные сылки: Checkbox Object, Form Object

Комментарии (RSS)

  • # Василий: толи зрение так посадил, но шрифт маловат для кода
    > можно побольше фрифт кода
    > и ещё хотелось бы узнать, как стилизовать всплывающее окно alert
  • # sartas: Alert стилизовать нельзя. Можно использовать скрипты, создающие всплывающие окна.
    Например этот - http://www.leigeber.com/2009/05/javascript-popup-box/
    или плагины к jQuery.
  • # Александр: супер спасибо

Оставить комментарий: