2010-04-21 225 views
48

我有以下的HTML表單,它可以有很多複選框。當點擊提交按鈕時,我希望用戶得到一個JavaScript警報,以檢查至少一個複選框,如果沒有選中。有沒有簡單的方法來使用JQuery來做到這一點?jquery - 檢查是否至少有一個複選框被選中

<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

你可能將與'<輸入名稱= 「CHK []」 的值= 「120」>'更好。還要注意,checked選項的** only **可接受值是「checked」。 'checked =「true」'是一個錯誤。 – Quentin 2010-04-21 16:22:22

回答

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

$('#frmTest:checkbox')。length> 0會更好地檢查一定數量的複選框。 – Kasturi 2010-04-21 15:54:04

+1

爲什麼單選按鈕會更好?如果OP希望*至少*選擇一個選項,單選按鈕會將他限制爲一個*最多*。 – 2010-09-15 16:39:53

+1

@David,我刪除了這個建議。 – 2010-09-15 17:24:06

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

:checked已經返回一個布爾值,所以不需要.length。 true.length和false.length都提供undefined – Jan 2014-03-21 12:30:27

+12

@Jan - 'jQuery('#frmTest input [type = checkbox]:checked')'返回一個jQuery對象,其中包含與選擇器匹配的所有元素。它不返回布爾值。您可能會將它與HTMLInputElement.checked混淆。 – Quentin 2014-03-21 12:33:16

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

是( ':檢查')將如果至少一個或多個複選框被檢查返回true。

+0

這是否可能檢查實時複選框點擊? – Robert 2012-07-09 22:12:24

+0

是的,但你會使用不同的事件處理程序。看到這個:http://stackoverflow.com/questions/3442322/jquery-checkbox-event-handling – namklabs 2013-01-30 17:01:27

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

不工作對我來說,jQuery如何處理複選框檢查事件的一些變化? – Envayo 2017-06-05 12:02:41

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

修復了一些錯誤,使演示工作。 – 2017-09-29 15:45:10

相關問題