Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Проверка массива галочек


Автор: rcdimon 7.10.2006, 13:03
На странице есть набор CkeckBox'ов Их может быть любое количество.. от 1 до скольки угодно.
Имена у всей этой группы галочек одинаковые. Это нужно что бы CGI скрипт потом без проблем мог принять их значение в виде массива и обработать как ему надо.

Нужно написать такой скрипт. Некий цикл или не знаю что, что должно узнавать какие галочки установлены.

У галочек есть ID и NAME NAME у всех одинаковый а вот ID можно сделать разные... И для каждой галочки надо сделать действие

string += '&cid='+id;

где id и есть ID галочки...

Надеюсь описал так, что смысл ясен... Надо узнать какие галочки установлены и сформировать строку в которой перечислены какие галочки установлены

Автор: GIK 7.10.2006, 14:31
Зада полностью не ясна, но можешь сам доработать. 
Код

<html> 
<head>
<style type=text/css>
</style>
<script language="javascript" type="text/javascript">

function check_sort(ID, ID2){
var nameInTable=document.getElementById(ID).getElementsByTagName('input'); //Кол-во эллементов в таблице
var nameInTR=document.getElementById(ID2).getElementsByTagName('input'); //Кол-во эллементов в строке

var lenInTable=nameInTable.length;
var lenInTR=nameInTR.length;
var reg=/\d/;
var str=new String(ID2); var num='';
for(var i=0; i<str.length; i++){
 var char=str.charAt(str[i]); if(reg.test(char)){num+=char;} 
}

for(var i=0; i<lenInTR; i++){ var n=parseInt(num);
 if(nameInTR[i].checked){alert('Установлен в строке № '+' '+n +' '+'в столбце № '+ (parseInt(i)+1) );}
 }
}
</script>
</head>
<body bgcolor="#ffffff">
  <Table width=30% id="tab1">
  <tr id=tr1><td><input type=checkbox name=check id=ch1 onClick="check_sort('tab1','tr1')">Колво чекбоксов</td><td><input type=checkbox name=check id=ch2 onClick="check_sort('tab1','tr1')">Колво чекбоксов</td></tr>   
  <tr id=tr2><td><input type=checkbox name=check id=ch3 onClick="check_sort('tab1','tr2')">Колво чекбоксов</td><td><input type=checkbox name=check id=ch4 onClick="check_sort('tab1','tr2')">Колво чекбоксов</td></tr>
  <tr id=tr3><td><input type=checkbox name=check id=ch5 onClick="check_sort('tab1','tr3')">Колво чекбоксов</td><td><input type=checkbox name=check id=ch6 onClick="check_sort('tab1','tr3')">Колво чекбоксов</td></tr>
  </Table>  
</body>
</html>

Автор: rcdimon 7.10.2006, 14:37
Привязка к таблице не нужна.

Нужно просто узнавать ID чекобоксов которые установлены.. все чекбоксы имеют одно имя..

И надо узнавать ВСЕ чекбоксы которые установлены... в идеале вообще надо массив, каждый элемент которого- ID чекбокса на котором галочка установлена

Автор: GIK 7.10.2006, 14:48
Код

<html> 
<head>
<style type=text/css>
</style>
<script language="javascript" type="text/javascript">

function check_sort(ID, ID2){
var nameInTable=document.getElementById(ID).getElementsByTagName('input'); //Кол-во эллементов в таблице
var nameInTR=document.getElementById(ID2).getElementsByTagName('input'); //Кол-во эллементов в строке

var lenInTable=nameInTable.length;
var lenInTR=nameInTR.length;
var reg=/\d/;
var str=new String(ID2); var num='';
for(var i=0; i<str.length; i++){
 var char=str.charAt(str[i]); if(reg.test(char)){num+=char;} 
}

for(var i=0; i<lenInTR; i++){ var n=parseInt(num);
 if(nameInTR[i].checked){alert('Установлен в строке № '+' '+n +' '+'в столбце № '+ (parseInt(i)+1));
  alert("Установлен ID"+''+nameInTR[i].getAttribute('id')); 
  }
 }
}
</script>
</head>
<body bgcolor="#ffffff">
  <Table width=30% id="tab1">
  <tr id=tr1><td><input type=checkbox name=check id=ch1 onClick="check_sort('tab1','tr1')">Колво чекбоксов</td><td><input type=checkbox name=check id=ch2 onClick="check_sort('tab1','tr1')">Колво чекбоксов</td></tr>   
  <tr id=tr2><td><input type=checkbox name=check id=ch3 onClick="check_sort('tab1','tr2')">Колво чекбоксов</td><td><input type=checkbox name=check id=ch4 onClick="check_sort('tab1','tr2')">Колво чекбоксов</td></tr>
  <tr id=tr3><td><input type=checkbox name=check id=ch5 onClick="check_sort('tab1','tr3')">Колво чекбоксов</td><td><input type=checkbox name=check id=ch6 onClick="check_sort('tab1','tr3')">Колво чекбоксов</td></tr>
  </Table>  
</body>
</html>

Просто создаешь массив и забиваешь его именами ID. Как обращатся, в коде указанно.

Добавлено @ 14:56 
Ну что, разобрался с проблемой?

Автор: rcdimon 7.10.2006, 15:11
почему у тебя привязка к таблице идет? Может у меня нет таблицы... 

Я же говорю.. есть чеки

<input type="checkbox" name="name" id="n1">
<input type="checkbox" name="name" id="n2">
<input type="checkbox" name="name" id="n3">
<input type="checkbox" name="name" id="n4">
<input type="checkbox" name="name" id="n5">
<input type="checkbox" name="name" id="n6">


И должен получиться массив... в котором записаны ID тех галочек, которые установлены

Автор: 12345c 7.10.2006, 15:25
Не вижу  в приведённом примере главного слова (getElenmentsByName), поэтому вот:

Код

<input type=checkbox name=chk[] id=in1 value=chk1 checked><br>
<input type=checkbox name=chk[] id=in2 value=chk2><br>
<input type=checkbox name=chk[] id=in3 value=chk3 checked><br>
<input type=checkbox name=chk[] id=in4 value=chk4><br>
<input type=checkbox name=chk[] id=in5 value=chk5 checked><br>
<input type=button value="Показать список id" onclick=ff()><br>
<script>ff=function(){
  aChk=document.getElementsByName('chk[]');
  a=[];
  for(i=0;i<aChk.length;i++)if(aChk[i].checked)a.push(aChk[i].id);
  alert(a)
}</script>

Автор: Ivushka 3.11.2006, 14:57
12345c, у меня таже проблема а твой код 
Код

aChk=document.getElementsByName('chk[]');

не воспринимает(((
только без скобок работает но без них выводится пустота
Код

<loop name="kat" value="kateg"><!-- цикл  -->
    <input type="Checkbox" checked class="kat" name="kat[]" value="<print name="kateg:ElementID">"> <print name="kateg:ElementName"></br>
    <endloop>

Автор: 12345c 7.11.2006, 12:40
В каком браузере наблюдается? У меня работает во всех - IE6, FF1.07, Op7.54, 9.01.

В IE7 не выводится alert, но работает

Код
<script>ff=function(){
  aChk=document.getElementsByName('chk[]');
  a=[];
  for(i=0;i<aChk.length;i++)if(aChk[i].checked)a.push(aChk[i].id);
  document.getElementById('d1').innerHTML=a;
}</script>
<div id=d1></div>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)