2012-06-13 10 views
6

Mam rozwijany selektor z wartościami od 1-4. W zależności od wyboru kolejne dane wejściowe w formularzu są ukrywane, a wymagane sprawdzanie poprawności jest usuwane z każdego z nich. np. Jeśli wybrano 2, to wyświetlane są wejścia 1-2 i wymagane jest zatwierdzenie, gdy 3-4 są ukryte, a sprawdzanie poprawności usunięte.Sprawdzanie poprawności jquery: Dodawanie/usuwanie reguł Dynamicznie w oparciu o wybór listy rozwijanej

$("#dropdownSelector").change(function() { 
inputtohide = $(this).val(); 
$('input[id*=conviction]').slice(0, inputtohide).show().rules("add", {required: "#convictions_0:checked" }); 
$('input[id*=conviction]').slice(inputtohide, 4).hide().rules("remove", {required: "#convictions_0:checked" }); 
$("#thisform").validate(); 
}); 

Działa to dobrze, jednak (zgodnie z dokumentacją dla państw wtyczki walidacja) zatwierdzanie dodaje się tylko do elementu pierwszy zwrócone.

rozumiem z innych stanowisk, że następujący kod powinien dodać walidację do każdego wejścia: -

$("#thisform").validate(); 
$("input[id*=conviction]").each(function() { 
    $(this).rules("add", {required: "#convictions_0:checked" }); 

    }); 

Moje pytanie to jak mogę połączyć dwa fragmenty kodu? Każda pomoc bardzo ceniona, dzięki.

Odpowiedz

5

Wystarczy skorzystać z funkcji .each() na skutek .slice() aby iteracyjne nad wszystkimi elementami Zwraca:

$('input[id*=conviction]').slice(0, inputtohide).each(function(){ 
    $(this).show().rules("add", {required: "#convictions_0:checked" }); 
}); 

$('input[id*=conviction]').slice(inputtohide, 4).each(function(){ 
    $(this).hide().rules("remove", {required: "#convictions_0:checked" }); 
}); 

nadzieję, że to pomaga!

+0

Dzięki @FreekOne, to była świetna pomoc. Dodał zasady poprawnie, ale show/hide przestał działać poprawnie. Zmieniłem go trochę i teraz działa - dziękuję: - 'code' $ ('input [id * = conviction]') slice (0, inputtohide) .show(). Each (function() {$ (this) .rules ("dodaj", {wymagane: "# convictions_0: checked"});}); $ ('input [id * = conviction]'). slice (inputtohide, 4) .hide(). each (function() {$ (this) .rules ("remove", {required: "# convictions_0: checked" });}); 'kod' – naturelab

+0

@naturelab Nie jestem pewien, dlaczego' show'/'hide' przestałby działać, ponieważ kod jest poprawny, ale cieszę się, że mogłem pomóc! –

Powiązane problemy