2009-10-07 13 views
13

Na mojej stronie (jsp) mam grupę radiobuttonów i pole tekstowe (które jest początkowo wyłączone).jquery włącz/wyłącz pole tekstowe na podstawie radiobuttonu

  • Gdy użytkownik kliknie na przycisk radiowy pole tekstowe powinny być włączone
  • i gdy użytkownik kliknie na jakiś inny przycisk radiowy pole tekstowe należy ponownie uzyskać wyłączone.

Jestem w stanie włączyć pole wyboru początkowo wyłączone z poniższym kodem.

$("#DevGroup_OTHER").click(function(){   
    $("#otherDevText").attr("disabled",""); 
}) 

Moje pytania:

  • Ale w jaki sposób można ponownie wyłączyć pole tekstowe?
  • Czy istnieje prostsze rozwiązanie przy użyciu jQuery?

pozdrowienia

Odpowiedz

32

Zawsze wyłączaj go (dla każdej opcji), a następnie włączyć go ponownie, jeśli przycisk radiowy jest ten, który umożliwia pole tekstowe. O ile użytkownik nie jest na maszynie zbudowanej w 1980 roku, będzie tak szybki, że nigdy się nie dowie.

$('radio').click(function() { 
    $("#otherDevText").prop("disabled",true); 
    if($(this).attr('id') == 'enable_textbox') { 
     $("#otherDevText").prop("disabled",false); 
    } 
}); 

Alternatywnie, jeśli istnieje wiele przycisków radiowych, które pozwolą pole tekstowe:

$('input:radio').click(function() { 
 
    $("#otherDevText").prop("disabled",true); 
 
    if($(this).hasClass('enable_tb')) { 
 
     $("#otherDevText").prop("disabled",false); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<fieldset id="DevGroup_OTHER"> 
 
    <input type="radio" id="d1" name="r1" value="d1">dev1 <br /> 
 
    <input type="radio" id="d2" name="r1" value="d2">dev2 <br/> 
 
    <input type="radio" id="d3" name="r1" value="d3" class="enable_tb"> enable 
 
</fieldset> 
 
<br /> 
 
<input id="otherDevText" name="tb1" disabled="disabled" 
 
     value="some Textbox value" type="text">

sens?

+0

dzięki u farris, to jeszcze lepiej. Innym problemem dla mnie jest użycie sprężyny, więc zamiast użyłem wszelkie pomysły na wybór wszystkich przycisków opcji. Jeszcze raz dziękuję. –

+0

Tak, znalazłem jeden, selektor według nazwy tagu. również, co będzie, gdy powiemy $ (this) w twoim kodzie? jest to pierwszy selektor ($ ("radio")) lub drugi ($ ("# otherDevText")) Otrzymuję nazwę obiektu polecenia coz i używam sprężyny MVC! –

+0

Nie jestem zaznajomiony z Spring MVC, ale jestem całkiem pewien, że przez jquery ma szansę wejść w interakcję z kodem, element * będzie * być ''. Odpowiedź na twoje drugie pytanie: '$ (this)' będzie odwoływać się do klikniętego elementu '$ ('radio')'. – KyleFarris

7
$("#some_other_radiobutton").click(function(){ 
    $("#otherDevText").attr("disabled","disabled"); 
}); 
+0

tak, ale teraz muszę napisać ten blok dla wszystkich innych radiobutonów –

+0

Dlaczego po prostu nie położysz klasy na wszystkich innych przyciskach radiowych "wyłącza tekst" i podpiąć obsługę kliknięcia do tej klasy? Tylko myśl, jestem nowicjuszem jQuery. –

+0

to lepszy pomysł, dziękuję. jakieś inne prostsze sposoby? –

Powiązane problemy