2009-05-28 3 views
1

모든 확인란의 선택을 해제하면 true/false로 알려주는 빠른 방법이나 기능이 있습니까? 어레이를 거치지 않고? (JS와 HTML로)모든 체크 박스가 선택되지 않은 경우 빠른 방법으로 확인 하시겠습니까?

내 모든 확인란을 모두 선택하지 않는 경우

<form action="/cgi-bin/Lib.exe" method=POST name="checks" ID="Form2"> 
    <input type=checkbox name="us" value="Joe" ID="Checkbox1"> 
    <input type=checkbox name="us" value="Dan" ID="Checkbox2"> 
    <input type=checkbox name="us" value="Sal" ID="Checkbox3"> 
</form> 

답변

5

var a = document.getElementsByName("us"); 
for(var i=0; i<a.length; i++) 
    if(a[i].checked) 
     return false; 
return true; 

은 (테스트하지 못했지만, 개념적으로는 유효합니다). jQuery와 같은 라이브러리조차도 반복하여 감추고 있습니다.

var form = document.getElementById('Form2'); 
var inputs = form.getElementsByTagName('input'); 
var is_checked = false; 
for(var x = 0; x < inputs.length; x++) { 
    if(inputs[x].type == 'checkbox' && inputs[x].name == 'us') { 
     is_checked = inputs[x].checked; 
     if(is_checked) break; 
    } 
} 
// is_checked will be boolean 'true' if any are checked at this point. 
+0

가 바로 반환하지 않습니다하기 전에 차트를 보지 확인 했니? 예 : 예제에서 Sal. – svinto

+0

웁스! 수정. 결정된. –

2

요약,이 잘린는 true를 돌려줍니다 ... 같은 이름을 가지고있다. 확인 된 것이 발견 되 자마자 퇴장합니다. 당신은 그들을 통해 루프가

+0

getElementsByName IE에서 황당 : http://www.quirksmode.org/dom/w3c_core.html 링크에 대한 –

+0

감사합니다 - 마지막으로 체크 박스 인 경우 –

6

jQuery는이 사소한 작업에서 불필요한 부풀림이 될 것입니다. 당신이 다른 목적을 실행하는 경우 사용을 고려하지만, 당신이 필요로하는 모든이 같은 것입니다 :

function AreAnyCheckboxesChecked() { 
    var checkboxes = document.forms.Form2.elements.us; 
    for (var i = 0; i < checkboxes.length; i++) { 
    if (checkboxes[i].checked) { 
     return true; 
    } 
    } 
    return false; 
} 
0

당신이 배열

를 거치지 않고

무엇을 의미합니까?

당신은

function check() { 
    var anyChecked = false; 
    var form = document.getElementById('Form2'); 
    var checkboxes = form.getElementsByTagName('input'); 
    for(var i=0; i < checkboxes.length; i++) { 
      if (checkboxes[i].checked) { 
       anyChecked = true; 
       break; 
      } 
    } 
    alert("Checkboxes checked? " + anyChecked); 
} 

Working Demo

+0

getElementsByName은 IE에서는 기발하고 Opera에서는 조금 있습니다 : http://www.quirksmode.org/dom/w3c_core.html, 나는 그것을 완전히 피하려고합니다. –

+0

환호 - 지금 업데이트 됨 –

4

자바 스크립트를 할 수있는 : jQuery로

var allischecked = (function(){ 
    var o = document.getElementById("Form2").getElementsByTagName("input"); 
    for(var i=0,l=o.length;i<l;i++){ 
    o[i].type === "checkbox" && o[i].name === "us" && o[i].checked || return false; 
    } 
    return true; 
})(); 

:

var allischecked = ($("#Form2 input:checkbox:not(checked)").length === 0); 
+0

+1 또한 JQuery 버전을 보여줍니다. 그래, 네가하고 싶은 것이 전부라면, JQuery는 잔인하다. 그러나 다른 검증, AJAX 등이있는 경우 한 줄 테스트는 어렵습니다. – GalacticCowboy

0

당신은 체크 박스의 t의 많은 양이있는 경우 모자를 사용하면이 방법을 사용하는 것이 더 효율적일 수 있습니다.

var checked = 0; 

$("input[type=checkbox]").live("click", function() { 
    if($(this).attr("checked")) checked++; 
    else checked--; 
} 

다음과 같이 테스트 할 수 있습니다.

if(checked === 0) { 
    doSomething(); 
} 
관련 문제