2010-05-10 5 views
3

Si l'utilisateur sélectionne une option dans la liste déroulante, il affichera une zone de texte mais s'il sélectionne l'option ayant la valeur "Autre" alors une ligne apparaîtra pour taper la valeur pour autre.Obtenir & définir la valeur déroulante à l'aide de jQuery

mon code fonctionne bien, sauf lorsque la valeur de l'option ne correspond pas à « Autre »

<script type="text/javascript"><!-- 
function setAndReset(box) { 
if(box.value == 'Other'){ 
    $("#ShowHide").hide(); 
} 
document.FormName.hiddenInput.value = box.value; 

} 
//--> 
</script> 

<body bgcolor="#ffffff"> 
<form id="FormName" action="" method="get" name="FormName"> 
    <select name="choice1" size="1" onchange="setAndReset(this);"> 
    <option value="one">first</option> 
    <option value="two">second</option> 
    <option value="three">third</option> 
    <option value="other">Other</option> 
    </select> 

    <input type="text" name="hiddenInput" value=""> 
    <tablt><tr id="ShowHide"><td> 
     <input type="text" name="otherInput"> 
    </td></tr></table> 
    <input type="submit" name="submitButtonName"> 
</form> 
</body> 

, mais il ne montre pas/masquer & ne valeur définie pas dans zone de texte.

Si c'est résolu en utilisant jquery alors je serai reconnaissant envers vous pour le code.

Merci.

Répondre

5

le faire comme ceci:

$(document).ready(function() { 
    $("select[name=choice1]").change(function() { 
     $(this).val() == 'other' ? $("#ShowHide").show() : $("#ShowHide").hide(); 
    }); 
}); 

et perdent la ligne onchange appel de fonction. Try it here.

+0

vous voulez $ (this) .val() == "autre" non "Autres" – brad

+0

@brad - Eh oui, dans ce coururent pendant que je faisais une petite démo. – karim79

1

J'aime la réponse de karim79, mais préfère un peu plus compact:

$(function() { 
    $("select[name=choice1]").change(function() { 
     $("#ShowHide").toggle($(this).val() === "other"); 
    }); 
}); 
  • Au lieu de $(document).ready(f), faire $(f), c'est exactement la même
  • Au lieu d'un == lâche, === pour une comparaison exacte (dans ce cas, cela n'a pas d'importance, mais == peut se comporter étrangement donc vous devriez l'éviter partout)
  • Utilisez toggle(b) au lieu de show()/hide()
+0

je ne savais pas toggle a pris un booléen! gentil et succinct – brad

Questions connexes