2013-04-23 111 views
3

我新的jQuery的,這是很有趣的,但我有一個小問題, 我從數據庫中使用foreach循環這樣的填充多個複選框,如何檢查使用jquery檢查多個複選框?

<? foreach($cities as $city) { ?> 
    <input type="checkbox" name="city[]" value="<?=$city->id?>" id="city[]" /> 
<? } ?> 

我想限制用戶檢查至少有一個複選框,我知道如何做到這一點只有一個複選框,但與jquery這種數組混淆,任何幫助將不勝感激! 非常感謝提前!

+1

你不應該使用單選按鈕,如果你只希望用戶選擇一個? – 2013-04-23 05:38:49

+0

@Willem Ellis他需要至少一次複選框才能被檢查。也可以有multipe。 – kiranvj 2013-04-23 05:41:59

+0

啊好吧,明白! – 2013-04-23 05:43:39

回答

11

要了解有多少複選框被選中,你可以使用類似:

var checkedNum = $('input[name="city[]"]:checked').length; 
if (!checkedNum) { 
    // User didn't check any checkboxes 
} 

既然你提供同樣的name屬性的所有複選框(從你的PHP環路),您可以使用選擇input[name="city[]"]定位並找到它們全部。但要找出有多少具體是檢查,您可以添加:checked選擇器。替代方案是使用$('input[name="city[]"]').filter(":checked")

最後,!checkedNum將只有只有通過,如果checkedNum爲0,因爲0是falsey。任何其他數字都是真實的,並且不會滿足條件!checkedNum


參考文獻:

+1

@lan不能忘記你的幫助,你是有才華的先生! – 2013-04-23 06:12:51

+1

它絕對正確! – 2013-04-23 06:13:16

0

假設你有#my_form爲表單的ID,你可以做

$("#my_form input[type=checkbox]:checked"). // ... do something 

選擇做與選中的複選框的東西。你也可以做

$("#my_form input[type=checkbox]").each(function(idx, elem) { 
    var is_checked = $(this).prop("checked"); 
    // Do something with is_checked 
}); 

遍歷所有複選框並檢查它們是否被選中。

2

如果你想至少一個複選框被選中,您可以使用此

var somethingChecked = false; 
$("input[type=checkbox]").each(function() { 
    if(this).is(':checked')) { 
    somethingChecked = true; 
    } 
}); 
if(!somethingChecked) { 
    alert("You haven't checked anything yet"); 
} 

這樣做是初始化變量設置爲false。然後腳本循環遍歷類型複選框的所有輸入。如果該項目被選中,請將該變量設置爲true。最後,檢查變量是否仍然是錯誤的。如果是,則顯示錯誤。

0

首先,id的複選框應該是唯一的。

做這樣

<? 
$checkBoxCount = 0; 
foreach($cities as $city) { ?> 
    <input type="checkbox" name="city[]" value="<?=$city->id?>" id="chkbox-<?=$checkBoxCount?>" /> 
<? } ?> 

現在jQuery的檢查這樣讓所有的複選框選中,多數民衆贊成。

var checkCount = $("input[name='city[]']:checked").length; 

if(checkCount == 0) 
{ 
    alert("Atleast one checkbox should be checked."); 
} 
0

此代碼的工作很適合我,我在這裏轉換數組字符串

<input type="checkbox" value="created" name="today_check"><strong>Created</strong> 
    <input type="checkbox" value="modified" name="today_check><strong>Modified</strong> 
<a class="get_tody_btn">Submit</a> 

<script type="text/javascript"> 
    $('.get_tody_btn').click(function(){ 
     var vals = ""; 
     $.each($("input[name='today_check']:checked"), function(){ 
      vals += "~"+$(this).val(); 
     }); 
     if (vals){ 
      vals = vals.substring(1); 
     }else{ 
      alert('Please choose atleast one value.'); 
     } 


    }); 
</script>