2010-04-21 13 views
48

Mam następujący formularz HTML i może on mieć wiele pól wyboru. Po kliknięciu przycisku przesyłania chcę, aby użytkownik otrzymał alert javascript, aby zaznaczyć co najmniej jedno pole wyboru, jeśli żaden z nich nie jest zaznaczony. Czy istnieje prosty sposób, aby to zrobić za pomocą Jquery?Jquery - sprawdź, czy jest zaznaczone co najmniej jedno pole wyboru

<form name = "frmTest" id="frmTest"> 
    <input type="checkbox" value="true" checked="true" name="chk[120]"> 
    <input type="checkbox" value="true" checked="true" name="chk[128]"> 
    <input type="checkbox" name="chk[130]"> 
    <input type="checkbox" name="chk[143]"> 
    <input type="submit" name="btnsubmit" value="Submit"> 
</form> 
+3

Prawdopodobnie byłoby lepiej z ''. Zwróć też uwagę, że akceptowana ** tylko ** wartość dla sprawdzanego atrybutu jest "sprawdzona". 'checked =" true "' jest błędem. – Quentin

Odpowiedz

29
$('#frmTest input:checked').length > 0 
+0

$ ('# frmTest: checkbox'). Length> 0 byłoby lepiej sprawdzić pośród pewnej liczby pól wyboru. – Kasturi

+1

Dlaczego przyciski radiowe będą lepsze? Jeśli OP chce co najmniej * jedna wybrana opcja, ograniczyłaby go maksymalnie do * *. –

+1

@David, usunąłem tę sugestię. –

17
$("#frmTest").submit(function(){ 
    var checked = $("#frmText input:checked").length > 0; 
    if (!checked){ 
     alert("Please check at least one checkbox"); 
     return false; 
    } 
}); 
82
if(jQuery('#frmTest input[type=checkbox]:checked').length) { … } 
+1

: sprawdzone już zwraca boolean, więc .length nie jest potrzebne. true.length i false.length oba zapewniają undefined – Jan

+12

@ Jan - 'jQuery ('# wejście frmTest [type = checkbox]: checked')' zwraca obiekt jQuery zawierający wszystkie elementy pasujące do selektora. Nie zwraca wartości boolowskiej. Możesz pomylić to z 'HTMLInputElement.checked'. – Quentin

4
$('#frmTest').submit(function(){ 
    if(!$('#frmTest input[type="checkbox"]').is(':checked')){ 
     alert("Please check at least one."); 
     return false; 
    } 
}); 

jest (': sprawdzone') zwróci true, jeśli co najmniej jeden lub więcej pól wyboru są sprawdzane.

+0

Czy to możliwe, aby sprawdzić kliknięcia checkbox na żywo? – Robert

+0

Tak, ale można użyć innej procedury obsługi zdarzeń. Zobacz: http://stackoverflow.com/questions/3442322/jquery-checkbox-event-handling – namklabs

7
$("#show").click(function() { 
    var count_checked = $("[name='chk[]']:checked").length; // count the checked rows 
     if(count_checked == 0) 
     { 
      alert("Please select any record to delete."); 
      return false; 
     } 
     if(count_checked == 1) { 
      alert("Record Selected:"+count_checked); 

     } else { 
      alert("Record Selected:"+count_checked); 
      } 
}); 
+0

Nie działa dla mnie, coś zmieniło się w tym, w jaki sposób jQuery obsługuje zdarzenie checkbox checkbox? – Envayo

0

$('#fm_submit').submit(function(e){ 
 
    e.preventDefault(); 
 
    var ck_box = $('input[type="checkbox"]:checked').length; 
 
    
 
    // return in firefox or chrome console 
 
    // the number of checkbox checked 
 
    console.log(ck_box); 
 

 
    if(ck_box > 0){ 
 
     alert(ck_box); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form name = "frmTest[]" id="fm_submit"> 
 
    <input type="checkbox" value="true" checked="true" > 
 
    <input type="checkbox" value="true" checked="true" > 
 
    <input type="checkbox" > 
 
    <input type="checkbox" > 
 
    <input type="submit" id="fm_submit" name="fm_submit" value="Submit"> 
 
</form> 
 
<div class="container"></div>

+0

Naprawiono kilka literówek, aby działało demo. –

Powiązane problemy