2017-01-12 2 views
0

J'ai une div répété plusieurs fois, contenant une boîte de sélection qui a une valeur Avancé. Lorsque je slectionne cette valeur dans la liste déroulante de la div particulière, je veux afficher une boîte de saisie correspondant à ce div.Comment afficher la boîte de saisie d'un div particulier lorsqu'une valeur est sélectionnée dans la liste déroulante?

<div > 

<select name="skilltest"> 

     <option value="advanced">Avanced</option> 

</select> 

<input type="text" class="disableskill"/> 

</div> 

J'ai écrit un script jquery pour afficher la zone de saisie comme indiqué ci-dessous:

$("select.skilltest").change(function() 
{ 
    var skillvalue=$(this).val(); 

    if(skillvalue == "Advanced" || skillvalue == "advanced") 
    { 
     $(".disableskill").show(); 
    } 
    else{ 

     $(".disableskill").hide(); 
    } 
}); 

Comment cela peut-il être atteint?

+1

Je prendrais un coup d'œil à la sélection frères et sœurs dans jQuery https://api.jquery.com/frères/soeurs/ –

+0

Pourquoi ne pas utiliser une case à cocher? Quel est le point d'avoir une liste de sélection avec une seule option? –

+0

@SamOnela Il est possible que d'autres options soient ajoutées dans le futur, ou peut-être ne veulent-elles pas traiter de la spécification de la logique sur le serveur pour les boîtes non cochées. Je ne peux pas le blâmer, personnellement. Les cases à cocher sont en quelque sorte ennuyantes. – Esten

Répondre

0

Vous pouvez utiliser la fonction suivante() pour sélectionner l'élément suivant de $ (this):

$("select[name=skilltest]").change(function(){ 
 
    var skillvalue=$(this).val(); 
 
    if(skillvalue == "Advanced" || skillvalue == "advanced"){ 
 
    $(this).next(".disableskill").show(); 
 
    } else{ 
 
    $(this).next(".disableskill").hide(); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <select name="skilltest"> 
 
    <option>--please select--</option> 
 
    <option value="advanced">Avanced</option> 
 
    </select> 
 
    <input type="text" class="disableskill" style="display:none;"/> 
 
</div>

0

Vous pouvez essayer. Avec la méthode next(), vous pouvez masquer ou afficher l'entrée suivante.

$(".skilltest").change(function() 
 
{ 
 
    var skillvalue = $(this).val(); 
 
    if(skillvalue == "Advanced" || skillvalue == "advanced") 
 
    { 
 
     $(this).next(".disableskill").show(); 
 
    } 
 
    else{ 
 
     $(this).next(".disableskill").hide(); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div> 
 
    <select class="skilltest"> 
 
    <option value="0"></option> 
 
    <option value="advanced">Avanced</option> 
 
    </select> 
 
    <input type="text" class="disableskill" style="display:none"/> 
 
</div> 
 

 
<div> 
 
    <select class="skilltest"> 
 
    <option value="0"></option> 
 
    <option value="advanced">Avanced</option> 
 
    </select> 
 
    <input type="text" class="disableskill" style="display:none"/> 
 
</div>

0

Vous pouvez essayer script suivant sans condition supplémentaire dans le bloc IF

$(".skilltest").change(function() 
{ 
    var skillvalue = $(this).val().toLowerCase(); 
    if(skillvalue == "advanced") 
    { 
     $(".disableskill").show(); 
    } 
    else{ 
     $(".disableskill").hide(); 
    } 
});