Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проверка CheckBox (https://javascript.ru/forum/dom-window/36079-proverka-checkbox.html)

Nicki 03.03.2013 17:53

Проверка CheckBox
 
Жаль, но сейчас для checkbox не получается проверить значения для box. Не пойму, в чем же я ошибаюсь, пробовала пару вариантов. Замучалась уже, на одни и те же грабли наступаю ... (((

for(k=0; k<3; k++) {
o=document.getElementsByName("boxo["+k+"]");
    ok=false;
        for(j=0; j<o.length; j++) {
            alert(o[j].value);
            x=document.getElementsByName("box["+j+"]");
            alert(x.value);
            if (o[j].checked) {
                ok=true; 
                break;
            };
        };
}

                            
<div class="line1">
	input type="checkbox" name="box[0]" value="11">
	<input type="hidden" name="boxo[4]" value="Text1" /><span>Text1</span>                                                     
</div>
<div class="line1">
	input type="checkbox" name="box[1]" value="11">
	<input type="hidden" name="boxo[4]" value="Text1" /><span>Text2</span>                                                     
</div>
<div class="line1">
	input type="checkbox" name="box[2]" value="11">
	<input type="hidden" name="boxo[4]" value="Text1" /><span>Tex3</span>                                                     
</div>

vadim5june 03.03.2013 18:26

А что нужно то?

Nicki 03.03.2013 20:40

С checkbox наконец разобралась, вот только не могу понять, почему не выводит сообщение в самом конце

alert("Заполните!\n"+er);


function checkx() { 
    var er=''; 
    var i,j,k,v,o,ok,t;        
    for(i=0; i<22; i++) { 
        v=document.fr.vopros[i].value; 
        k=i+1;
switch(v) {
case "radio":
        o=document.getElementsByName('rad['+k+']');
        ok=false;  
        for(j=0; j<o.length; j++) {    
            if (o[j].checked) {
                ok=true; 
                break;
            };
        };
        if (!ok) {
             er+='Вопрос'+k+'\n'; 
        }; 
  break;
case "check":
    o=document.getElementsByName("bxx["+k+"]");
    ok=false;
    for(j=0; j<o.length; j++) {
            if (o[j].checked) {
                ok=true;
                break; 
            };        
    };    
    if (!ok) {
        er+='Вопрос'+k+'\n'; 
    }; 
    break;
case "text":
    t=document.fr['ans'+k].value;
    if(t.length<2) er+='Вопрос'+k+'\n';   
    break;  
} 
    alert(er);  // Выводит сообщение
}  
if(er=='') {
    document.fr.submit();             
    } else {
      alert("Заполните!\n"+er);  // Почему-то не выводит сообщение
    }  
}

vadim5june 03.03.2013 20:53

там может скобку на строке 40 нужно ниже перенести

Nicki 03.03.2013 21:48

Я пробовала такой вариант, но он совершенно не реагирует ...........
Хотя в похожем ниже приведенном варианте всё нормально работает. Никак не могу понять, в чем же разница и что мешает.

function radf() { 
    var er='';     
    
    var i,j,o,ok;
    for(i=1; i<26; i++) {    
        o=document.getElementsByName('rad['+i+']');
        ok=false;
        for(j=0; j<o.length; j++) {    
            if (o[j].checked) {
                ok=true; 
                break;
            };
        };
        if (!ok) {
             er+='Вопрос'+i+'\n'; 
        };              
    };  
    if(er=='') {
        document.fr.submit();             
    } else {
        alert("Заполните!\n"+er);  
    }   
}


Часовой пояс GMT +3, время: 22:29.