2011-01-25 1 views
9

이 코드가 있지만 실제로 반환하지 않는 것 같습니다. 경고가 항상 나타납니다. 모든 생각 (확인란을 저장하는 var를 만들 필요없이 그냥 조금 해킹 것 같습니다 선택되었습니다).Jquery stop form submit 체크 박스가 선택되지 않은 경우

감사합니다.

<script> 

    function countChecked() { 
     var n = $("input:checked").length; 
     $("div").text(n + (n <= 1 ? " is" : " are") + " checked!"); 
    } 
    countChecked(); 
    $(":checkbox").click(countChecked); 

</script> 

는 위 "$은 ("입력 : 선택 ")는"

확인 checboxes의 수를 확인하는

$("#form").submit(function(e) { 
    $('input[type=checkbox]').each(function() { 
     if(this.checked){ 
      return true; 
     } 
    }); 
    alert("Please select at least one to upgrade."); 
    return false; 
}); 

답변

17

확인란을 선택했는지 확인하기 위해 루프를 수행 할 필요가 없습니다. :checked 선택기는 선택되지 않은 항목을 모두 필터링합니다. 그런 다음 $.length을 사용하여 체크 된 입력 수를 얻을 수 있습니다.

$("#form").submit(function(e) { 
    if(!$('input[type=checkbox]:checked').length) { 
     alert("Please select at least one to upgrade."); 

     //stop the form from submitting 
     return false; 
    } 

    return true; 
}); 

또한, 당신의 접근 방식을 사용, 작은 변화는 당신이 단순히 클릭에 대한 $() 주위 this

+0

감사합니다. 좋은 깨끗한 솔루션. 좀 더 읽기 쉬운 것 같아서 나는 당신 자신의 버전으로 갔다. – edwardmlyte

+0

e.preventDefault()가 Firefox에서 작동하지 않는 문제를 최근에 보았습니다. 약간의 연구를 통해, 나는 진실 또는 거짓을 돌려주는 것이 똑같은 일을 할 것이며 더 널리 받아 들여지는 것을 발견했습니다. 나는이 접근법을 반영하기 위해 나의 대답을 바꾸었다. – Josh

0

예 ... 선택한 항목의 배열을 반환 ... 당신은 확인할 수 있었다 " 이 배열의 길이가 0보다 큰지 확인하십시오.

+0

이미 jquery로 배열을 반복하고있는 경우이 작업을 수행하는 데 다소 중복 된 것으로 보입니다. 그러나 나는 당신의 요지를 얻었고 적어도 하나가 체크되면 제출을 계속할 수 있기를 바랬다. – edwardmlyte

3

ID 참조 #form을 사용하고 있습니다. 모든 양식을 참조하려는 것입니까, 아니면 양식에 ID가 form입니까?

+0

그것은 실제로 다른 ID를 가지고 있습니다. 방금 간단하게 변경했습니다. – edwardmlyte

0

코드 누락 될 수 있습니다 생각

$("#form").submit(function(e) { 
    $('input[type=checkbox]').each(function() { 
     if($(this).is(':checked')){ 
      return true; 
     } 
    }); 
    alert("Please select at least one to upgrade."); 
    return false; 
}); 

이 일을하고 제출 버튼을 입력해야합니다 :

$(":input").bind("click keypress", function(evt) { 
    var keyCode = evt.which || evt.keyCode; 
    var sender = evt.target;     
    if (keyCode == 13 || sender.type == "submit") {       
     evt.preventDefault(); 
     // add your validations 
    } 
    // and submit the form 
} 
-1
var atleast = 1; 
function validate() { 
    debugger; 
    var CHK = document.getElementById("<%=chk1"); 
    var checkbox = document.getElementsByTagName("input"); 
    var counter = 0; 
    for (var i = 0; i < checkbox.length; i++) { 
     if (checkbox[i].checked) { 
      counter++; 
     } 
    } 
    if (atleast > counter) { 
     alert("Please select atleast " + atleast + " employee "); 
     return false; 
    } 
    return true; 
} 

<button type="submit" name="Initiate" value="Initiate" on click="return validate()" id=" initiate"></button> 
+0

[좋은 답변 작성 방법] (http://stackoverflow.com/help/how-to-answer)을 검토하십시오. 참고 문헌을 추가하고 왜 사람들이 귀를 기울여야하는지 그 이유를 설명하십시오. –