2010-07-13 6 views
1

여러 개의 확인란이 있습니다. 제출 버튼을 클릭하면 하나 이상의 확인란이 선택되었는지 확인하고 싶습니다. 그제출 중 - 하나 이상의 확인란을 선택하십시오.

function doSubmit(){ 
    function check_checkboxes() 
    { 
    checked=false; 
    var c = document.getElementsByTagName('input'); 
    for (var i = 1; i < c.length; i++) 
    { 
     if (c[i].type == 'checkbox') 
     { 
     if (c[i].checked) { 
     return true} 
     else {alert("Please identify what warehouses comply:"); } 
      } 
     } 
     document.holiDay.command.value= 'addingApp'; //My struts Action to perform if selected 
     document.holiDay.submit(); 
    }  
} 

답변

1

alert은 for 루프 외부에 있어야합니다. 그렇지 않으면 체크되지 않은 모든 체크 박스에 대해 실제로 체크 된 하나의 체크 박스가 표시됩니다. 이 같은 것이 작동해야합니다 :

for (var i = 0; i < c.length; i++) { 
    if (c[i].type == 'checkbox' && c[i].checked == true) { 
    // At least one checkbox IS checked 
    document.holiDay.command.value= 'addingApp'; //My struts Action to perform if selected 
    document.holiDay.submit(); 
    return true; 
    } 
} 

// Nothing has been checked 
alert("Please identify what warehouses comply:"); 
return false; 
+0

루프에 "off by one"오류가 있습니다. "c [i] .type"이 소문자임을 보장 할 수 있습니까? – Sparafusile

+0

:) OP 코드를 복사하여 붙여 넣을 때 색인 생성 오류가 간과되었습니다. 그리고 네, 대부분의 브라우저에서 타입이 소문자임을 확신합니다. – casablanca

1
function doSubmit() 
{ 
    var c = document.getElementsByTagName('input'); 
    for(var i = 0; i < c.length; i++) 
    { 
    if(c[i].type.toLowerCase() == 'checkbox' && c[i].checked) 
    { 
     // A checkbox was checked, good user 
     return(true); 
    } 
    } 
    // No checkbox checks, bad user 
    return(false); 
} 

난 당신이 이제 막 시작하는 것처럼 보인다 자바 스크립트 책을 읽고 제안 작동하지 않습니다. 코딩 스타일과 일관성에 관한 책은 결코 해를 끼치 지 않았다.

관련 문제