2010-01-28 8 views
0

Je dois masquer un libellé 'Autre' et le champ de saisie correspondant par défaut. Ensuite, lorsqu'un utilisateur sélectionne "Autre" dans une liste déroulante HTML, l'étiquette correspondante et l'entrée de texte doivent apparaître. S'ils naviguent à une option différente, alors l'étiquette et la saisie de texte sont cachés à nouveau:jQuery HTML sélectionner bascule/afficher/masquer

HTML:

<select id="indTitle" class="inlineSpace"> 
     <option value="Please select">Please select...</option> 
     <option value="Mr">Mr</option> 
     <option value="Mrs">Mrs</option> 
     <option value="Ms">Ms</option> 
     <option value="Miss">Miss</option> 
     <option value="Dr">Dr</option> 
     <option value="Other">Other</option> 
    </select> 
    <label for="indOther" class="inlineSpace">Other</label> 
    <input type="text" class="text" name="indOther" id="indOther" maxlength="20" /> 

Répondre

3
$('#indTitle').change(function() { 
    if($(this).val() == 'Other') { 
     $('label[for=indOther], #indOther').show(); 
    } else { 
     $('label[for=indOther], #indOther').hide(); 
    } 
}); 
+0

Salut. Bravo pour ça. J'ai dû définir la valeur par défaut pour masquer également en ajoutant: $ ('label [pour = indOther], #indOther'). Hide(); avant l'événement de changement – RyanP13

+0

ah, oui. si c'est caché par défaut, cependant (ce qui est logique), je considérerais le masquer manuellement en ajoutant 'style =" display: none; "' en ligne aux deux éléments, sinon ils pourraient être visibles brièvement avant l'exécution du script. –

+0

Je devrais accepter que JavaScript soit désactivé, donc si je devais ajouter manuellement, l'utilisateur ne pourrait jamais entrer l'autre texte s'il avait sélectionné Autre comme titre. Ne vous méprenez pas, j'apprécie vraiment l'aide encore :) – RyanP13