2011-06-10 54 views
5

我想要一個應用程序,用戶可以爲任意個人輸入數據。每個人最多可以選擇六種選擇中的三種。我想要幫助如何強制使用任何單個jQuery的最多三個選擇。分組複選框,並允許在每個組中檢查最多三個

這裏是一個示例代碼

<div id="subscriber_1"> 
    <input type=checkbox name=national> 
    <input type=checkbox name=international> 
    <input type=checkbox name=business> 
    <input type=checkbox name=entertainment> 
    <input type=checkbox name=religion> 
    <input type=checkbox name=sports> 
</div> 

訂戶可高達20運行,像subscriber_1,subscriber_2,... subscriber_20。我將非常感謝您的協助。

回答

10

你應該一類添加到您的用戶的div,使它容易將事件處理程序:

<div id="subscriber_1" class="subscriber">...</div> 
<div id="subscriber_2" class="subscriber">...</div> 

,並使用此jQuery的:

$('.subscriber :checkbox').change(function() { 
    var $cs = $(this).closest('.subscriber').find(':checkbox:checked'); 
    if ($cs.length > 3) { 
     this.checked = false; 
    } 
}); 

jsFiddle Demo

說明:在這些複選框的更改事件中,我們查找類別最近的父代.subscriber。我們得到這個div內的複選框。如果有3個以上(當前選中的一個),我們取消選中當前的一個。


如果你肯定不希望添加類,你可以使用它代替選擇:

$('[id^="subscriber_"] :checkbox')... 

這就是所謂的Attribute Starts With Selector

+0

+1;從UI的角度來看,我也建議讓處理程序顯示一個消息(非模態),說'你只能檢查3個盒子!'... – Jeff 2011-06-10 08:05:56

+0

好吧,我已經試過了。我已將JavaScript放在名爲control.js的文件中,並將其添加到標題標記中。我試了幾次,但選擇是無限的。我的代碼或結構有什麼問題 – Tamseyc 2011-06-10 08:42:11

+0

@Tamseyc你把它放在'document.ready()'中嗎?你有沒有添加我建議的課程? – kapa 2011-06-10 08:46:45