2012-05-05 20 views
9

Mam formularza HTML z zestawem wyboru, jak zrobić użytkownik może sprawdzić tylko stałą liczbę nichLimit zaznaczone pole wyboru w formularzu

+0

możemy zobaczyć kod HTML? Czy jesteś zainteresowany ograniczeniem całkowitej liczby lub ograniczeniem ich do określonej grupy? Tak jak mogą sprawdzić dwa z trzech, czy jest jakiś inny rodzaj ograniczenia? – Sampson

+0

Chcę ograniczyć całkowitą liczbę ... html to tylko formularz z kilkoma polami wyboru i przycisk przesyłania –

Odpowiedz

28

Ten przykład policzyć liczbę skontrolowanych wejść po każdy jest sprawdzany i porównać przeciwko maksymalnej liczby dozwolonych. Jeśli wartość maksymalna zostanie przekroczona, pozostałe pola wyboru są wyłączone.

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

Oto przykład roboczych - http://jsfiddle.net/jaredhoyt/Ghtbu/1/

+0

polubił to! ładnie wykonane – sha256

+0

działa dobrze :) .. po prostu zastanawiam się: kiedy zamieniam "jQuery" na "$" dlaczego to nie działa? –

+0

Czy masz załadowane inne biblioteki używające obiektu '$', takiego jak prototyp? 'jQuery' powinien być synonimem' $ 'i short-hand dla' $ (document) .ready() '. – jaredhoyt

5

To wiąże się z każdego wyboru trochę logiki, która sprawdza, ile pól wyboru jest zaznaczonych w bieżącym formularzu. Jeśli liczba ta wynosi 2, wyłączamy wszystkie pozostałe.

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

Działa to na podstawie formularza, co oznacza, że ​​można mieć wiele formularzy, które nie dotykają wejść jeden od drugiego. W poniższym pokazie prezentuję trzy formularze, z których wszystkie zawierają trzy pola wyboru. Ograniczenie 2 pól wyboru ogranicza się do ich odpowiednich formularzy.

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

Powiązane problemy