Флажки в Javascript - PullRequest
       16

Флажки в Javascript

1 голос
/ 04 ноября 2011

Вот сделка.Задача состоит в том, чтобы написать функцию, которая сможет определять количество флажков, отмеченных для каждого вопроса, и запрашивать у пользователя, если было выбрано более 3 ответов.У меня всего 8 вопросов, и на каждый вопрос от 4 до 8 ответов в формате флажков.Вот что я придумал:

function countChecks(){
   var m = 0;
   var n = 0;
 chk = document.getElementsByName("DSelectionID");

  for(var i=0; i<myitems.length i=""></myitems.length>
   var value = myItems[i];

  for(n = 0; n < value.length; n++) {
 if(value[n].checked)  {
  m++;
 }
 }
 return m;
 }

вышеупомянутая функция отлично работает для одного вопроса и возвращает 'm' основной функции, которая обрабатывает это следующим образом:

var check = countchecks();

if (check > 3)
 alert ("more than 3 checkboxes were selected");
   else { 
 //do the thing 
}  

чтобы перебрать все 8 вопросов, это то, что я придумал:

 function countChecks(){

   var m = 0;
   var n = 0;

// это захватывает идентификаторы для правильных вопросов

 chk = document.getElementsByName("DSelectionID");
 chk2 = document.getElementsByName("DSelectionID2");
 chk3 = document.getElementsByName("DSelectionID3");
 chk4 = document.getElementsByName("DSelectionID4");
 chk5 = document.getElementsByName("DSelectionID5");
 chk6 = document.getElementsByName("DSelectionID6");
 chk8 = document.getElementsByName("DSelectionID8");
 chk9 = document.getElementsByName("DSelectionID9");

  var myItems = new Array();

  myItems[0]= chk;
  myItems[1]= chk2;
  myItems[2]= chk3;
  myItems[3]= chk4;
  myItems[4]= chk5;
  myItems[5]= chk6;
  myItems[6]= chk8;
  myItems[7]= chk9;

// перебирает все вопросы для (var i = 0; i var value = myItems [i];

// перебирает флажки для каждого вопроса

 for(n = 0; n < value.length; n++)
  {
  if( value[n].checked)
  {
      m++;
     if (m > 3) {
    return false; 
   }
  }
 }
   }
}

, и основная часть обрабатывает его следующим образом:

var check = countChecks() 
if (check == false)
alert ("more than 3 checkboxes were selected");
   else {
//do the thing
  }

Это что-то очень простое, что мне не хватает в функции countChecks (). Есть идеи?

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

Использование jquery сделало бы это довольно тривиальным

if ($('#yourform input[type=checkbox]:checked').length() > 3) {
   alert('More than 3 checked');
}
0 голосов
/ 04 ноября 2011

chk = document.getElementsByName("DSelectionID"); не захватывает идентификатор, он захватывает ссылку на элемент в DOM.

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

chk = document.getElementsByName("DSelectionID").getAttribute("id")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...