2011-08-18 14 views
7

Próbuję sprawdzić w jQuery, czy wybrana jest opcja select o wartości = 1, a następnie dodać klasę do niektórych elementów. Ale coś nie działa. Czy możesz zerknąć na kod?wybrana opcja jQuery IF

Mój kod:

Reservation <br/> 
<select id="rReservation" name="rReservation" class=""> 
           <option value="0">Maybe</option> 
           <option value="1">Sure</option> 
</select> 
<hr/> 
Name <br/> 
<input type="text" name="rCardUser" class="mRequired" /> 

<hr/> 
Card<br/> 
<input type="text" name="rCardNrr" class="mRequired" /> 

jQuery

if ($("#rReservation").val() == "1") { 
    $('.mRequired').addClass('required'); 
} else { 
    $('.mRequired').removeClass('required'); 
} 

przykład LIVE na skrzypcach - http://jsfiddle.net/C7Gg3/

+0

Kod wygląda dobrze. Co dokładnie nie działa? –

Odpowiedz

10

Trzeba go wewnątrz obsługi zdarzeń:

$('#rReservation').change(function(){ 
    $('.mRequired').toggleClass('required', $(this).val() == '1'); 
}); 

http://jsfiddle.net/AlienWebguy/C7Gg3/1/

Jeśli chcesz, aby wywołać tylko na obciążenia, trzeba dodać selected="selected" do jednej z opcji, bo aż jedna jest „wybrany”, $('#rReservation").val() będzie null. Przykład: http://jsfiddle.net/AlienWebguy/C7Gg3/3/

+0

Daleki odkurzacz do używania '.toggleClass()', amigo ... –

+0

Uzgodniony. Nie chciałem przepisywać całego jego kodu, ale z uwagi na demo warto to zmienić. – AlienWebguy

5

Trzeba słuchać przypadku change:

$("#rReservation").change(function(){ 
    if ($("#rReservation").val() == "1") { 
     $('.mRequired').addClass('required'); 
    } else { 
     $('.mRequired').removeClass('required'); 
    } 
}); 

http://jsfiddle.net/epkN8/

+1

-1 nie, nie. – Maverick

+1

@Matt Anderson: Dlaczego nie? Próbuje dodać/usunąć zajęcia za każdym razem, gdy wybrana jest opcja. Jedynym sposobem na to, AFAIK, jest słuchanie zdarzenia 'change'. Czy czegoś brakuje? –

+0

Powiedział: "Próbuję sprawdzić w jQuery, czy wybrana jest opcja select z wartością = 1, a następnie dodaj klasę do niektórych elementów". Jeśli dodawał właściwość "selected" do jednego ze znaczników '

0

Musisz upewnij się, że zawinięte swój kod w przypadku zmiany tak, że masz do słuchania zmiana się dzieje.

http://jsfiddle.net/C7Gg3/2/

$('#rReservation').change(function(){ /* my code goes here */}); 
3

Może chcesz dodać/usunąć klasa każdym razem zmiany <select> wartość:

$(function() 
{ 
    $("#rReservation").change() 
    { 
     $('.mRequired').toggleClass('required', $(this).val() == "1"); 
    } 
}); 
+0

+1 za sugerowanie użycia przełącznika z argumentem warunku. – AlienWebguy

Powiązane problemy