Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсчитать количество отмеченных CHECKBOX
 
 автор: Уфимец   (05.02.2011 в 19:52)   письмо автору
 
 

Не могу понять как можно рассчитать в JS кол-во отмеченных элементов в форме?
Смотрел решения с использование jQuery, не охота для такой простой задачи использовать его.
На php без проблем передал значения из формы на php скрипт узнал кол-во элементов в массиве


<?php
$count 
count($check); 
?>


и все!

Вообщем:
Допустим есть форма со значениями name="id[]" ...... onclick="check()"
Нужно подсчитать кол-во отмеченных элементов, help me

  Ответить  
 
 автор: sim5   (05.02.2011 в 20:02)   письмо автору
 
   для: Уфимец   (05.02.2011 в 19:52)
 

Форма с элементами, это массив, получив у формы массив только чекбоксов, с помощью getElementsByTagName("checkbox"), в цикле проверяете отмечен он или нет.

  Ответить  
 
 автор: Уфимец   (05.02.2011 в 22:43)   письмо автору
 
   для: sim5   (05.02.2011 в 20:02)
 

вот что получилось

<script type="text/javascript">
function check()
{
  //объявляем переменные
  var checkeds,i,checkboxs;
  //кол-во отмеченных checkbox
  var checkeds = 0;
  //массив все тегов input
  checkboxs = document.getElementsByTagName("input");
  //формируем цикл
  for(i=0; i < checkboxs.length; i++)
  {
     //если тип элемента равен checkbox
     if(checkboxs[i].type == "checkbox")
     {
        //проверяем его на checked
        if(checkboxs[i].checked == true)
        {
           //считаем кол-во
           checkeds++;
        }
     }
  }

  if(checkeds > 1)
  {
     //если кол-во отмеч.элементов более одного отображаем кнопку
     document.form1.action.style.display="block";
  }
  if(checkeds < 2)
  {
     //если кол-во отмеч.элементов менее двух скрываем кнопку
     document.form1.action.style.display="none";
  }

}
</script>

  Ответить  
 
 автор: Абырвалг   (05.02.2011 в 23:00)   письмо автору
 
   для: Уфимец   (05.02.2011 в 22:43)
 

А теперь - то же самое, только без лишних глупостей:
<script type="text/javascript">
function check ()
{
  //объявляем переменные
  var checkeds,i,checkboxs;
  //кол-во отмеченных checkbox
  var checkeds = 0;
  //массив все тегов input
  checkboxs = document.getElementsByTagName("input");

  //формируем цикл
  for (var checkeds = i = 0, checkboxs = document.form1.elements, l = checkboxs.length; i < l; i++) //СТРОКА ПЕРВАЯ
  {
     //если тип элемента равен checkbox

     if (checkboxs [i].type == "checkbox" && checkboxs [i].checked) checkeds++;  //СТРОКА ВТОРАЯ
     {
        //проверяем его на checked
        if(checkboxs[i].checked == true)
        {
           //считаем кол-во
           checkeds++;
        }
     }
  }

  if(checkeds > 1)
  {
     //если кол-во отмеч.элементов более одного отображаем кнопку
     document.form1.action.style.display="block";
  }
  if(checkeds < 2)
  {
     //если кол-во отмеч.элементов менее двух скрываем кнопку
     document.form1.action.style.display="none";
  }

document.form1.action.style.display = (checkeds > 1) ? 'block' : 'none'; //СТРОКА ТРЕТЬЯ
}
</script> 

  Ответить  
 
 автор: Уфимец   (06.02.2011 в 10:05)   письмо автору
 
   для: Абырвалг   (05.02.2011 в 23:00)
 

оптимизация =)

  Ответить  
 
 автор: Уфимец   (06.02.2011 в 10:47)   письмо автору
 
   для: Уфимец   (05.02.2011 в 19:52)
 

Нашел в инете функцию которая мне нужна была =)
http://javascript.ru/php/count
function count( mixed_var, mode ) {    // Count elements in an array, or properties in an object
    // 
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: _argos

    var key, cnt = 0;

    if( mode == 'COUNT_RECURSIVE' ) mode = 1;
    if( mode != 1 ) mode = 0;

    for (key in mixed_var){
        cnt++;
        if( mode==1 && mixed_var[key] && (mixed_var[key].constructor === Array || mixed_var[key].constructor === Object) ){
            cnt += count(mixed_var[key], 1);
        }
    }

    return cnt;
}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования