2012-05-05 69 views
9

我有一個HTML表格一組複選框,如何讓用戶只能查看他們限制的形式

+0

我們能看到你的HTML?你有興趣限制總數還是限制他們到某個組?就像他們可以檢查三個中的兩個,還是有其他類型的限制? – Sampson

+0

我想限制總數.. html只是一個複選框和一個提交按鈕 –

回答

28

這個例子將計數的檢查輸入的數目每一個被選中後,並比較與允許的最大數量。如果超過了最大值,則剩餘的複選框被禁用。

jQuery(function(){ 
    var max = 3; 
    var checkboxes = $('input[type="checkbox"]'); 

    checkboxes.change(function(){ 
     var current = checkboxes.filter(':checked').length; 
     checkboxes.filter(':not(:checked)').prop('disabled', current >= max); 
    }); 
}); 

這裏是一個工作的例子 - http://jsfiddle.net/jaredhoyt/Ghtbu/1/

+0

喜歡它!很好完成 – sha256

+0

它工作很好:) ..只是想知道:當我用「$」替換「jQuery」爲什麼它不起作用? –

+0

你有沒有使用'$'等對象加載其他庫,如原型? 'jQuery'應該與'$'同義並且'$(document).ready()'是簡寫。 – jaredhoyt

5

這結合每個複選框有點邏輯的檢查,看看固定數量的選中的複選框在當前表單中檢查了多少個複選框。如果這個數字等於2,我們禁用所有其他盒子。

$("form").on("click", ":checkbox", function(event){ 
    $(":checkbox:not(:checked)", this.form).prop("disabled", function(){ 
    return $(this.form).find(":checkbox:checked").length == 2; 
    }); 
}); 

這對每個表單都有效,這意味着您可以有多個表單不會觸及對方的輸入。在下面的演示中,我展示了三種形式,其中包含三個複選框。 2個複選框的限制僅限於其各自的形式。

演示:http://jsbin.com/epanex/4/edit