2012-05-05 13 views
9

Ho un modulo HTML con una serie di caselle, come rendere l'utente può controllare solo un numero fisso di loroLimit controllato casella in una forma

+0

Possiamo vedere il codice HTML? Sei interessato a limitare il conteggio totale o limitarlo a un determinato gruppo? Come possono controllare due dei tre, o c'è qualche altro tipo di restrizione? – Sampson

+0

Voglio limitare il conteggio totale ... l'html è solo un modulo con alcune caselle di controllo e un pulsante di invio –

risposta

28

Questo esempio conta il numero di ingressi controllati dopo ogni sia selezionata e confrontare con il numero massimo consentito. Se viene superato il limite massimo, le caselle di controllo rimanenti sono disabilitate.

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); 
    }); 
}); 

Ecco un esempio di lavoro - http://jsfiddle.net/jaredhoyt/Ghtbu/1/

+0

è piaciuto! ben fatto – sha256

+0

funziona bene :) .. mi chiedo solo: quando sostituisco "jQuery" con "$" perché non funziona? –

+0

Avete altre librerie caricate che usano l'oggetto '$' come prototipo? 'jQuery' dovrebbe essere sinonimo di' $ 'e short-hand per' $ (document) .ready() '. – jaredhoyt

5

Questo associa ad ogni casella un po 'di logica che controlla per vedere quante caselle di controllo sono selezionate nel modulo corrente. Se quel numero è uguale a 2, disabilitiamo tutte le altre caselle.

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

Questo funziona su una base per modulo, nel senso che è possibile avere più moduli che non tocchino gli input reciproci. Nella demo qui sotto espongo tre moduli, che contengono tre caselle di controllo. La restrizione di 2 caselle di controllo è limitata alle rispettive forme.

Dimostrazione: http://jsbin.com/epanex/4/edit

Problemi correlati