2009-10-07 4 views
13

Dans ma page (jsp) j'ai un groupe de radiobutton et une zone de texte (qui est désactivée initialement).jquery active/désactive la zone de texte basée sur le radiobutton

  • Chaque fois que l'utilisateur clique sur un bouton radio la zone de texte doit être activé
  • et lorsque l'utilisateur clique sur un autre bouton radio la zone de texte doit encore obtenir désactivé.

Je peux activer la case à cocher initialement désactivée avec le code ci-dessous.

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

Mes questions:

  • Mais comment puis-je désactiver le champ de saisie à nouveau?
  • Existe-t-il une solution plus simple utilisant jQuery?

ce qui a trait

Répondre

32

désactiver Toujours (pour chaque bouton radio), puis le réactiver si le bouton radio est celui qui permet à la zone de texte. Sauf si l'utilisateur est sur une machine construite en 1980, ce sera tellement rapide, on ne le saura jamais.

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

Sinon, s'il y a des boutons radio multiples qui permettront à la zone de texte:

$('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

merci farris, c'est encore mieux. un autre problème pour moi est que j'utilise le ressort ainsi au lieu de j'ai utilisé des idées sur la sélection de tous les boutons radio. merci encore. –

+0

oui j'en ai trouvé un, selector par nom de tag. aussi, que sera-t-il quand nous dirons $ (this) dans votre code? est-ce le premier sélecteur ($ ('radio')) ou le second ($ ("# otherDevText")) je reçois un nom d'objet de commande coz j'utilise spring MVC! –

+0

Je ne suis pas familier avec Spring MVC, mais je suis sûr que par le jquery a une chance d'interagir avec le code, l'élément * sera * '. La réponse à votre deuxième question: '$ (this)' référencera l'élément '$ ('radio') 'cliqué. – KyleFarris

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

Oui, mais maintenant je dois écrire ce bloc pour tous les autres boutons radio –

+0

Pourquoi ne pas simplement placer une classe sur tous les autres boutons radio "disables-text" et connecter le gestionnaire de clic à cette classe? Juste une pensée, je suis un novice jQuery. –

+0

c'est une meilleure idée, merci. d'autres moyens plus simples? –

Questions connexes