jQuery obtenir le nom d'une option de sélection
J'ai une liste déroulante avec plusieurs options, chaque option a un attribut name. Lorsque je sélectionne une option, une liste de cases à cocher doit apparaître lorsque l'autre des options est sélectionnée, cette liste de case à cocher devrait disparaître et un autre être affiché.
J'ai créé cette case à cocher listes et leur a donné un ID qui correspond à l'attribut name de l'option sélectionnée. Je suis en train d'utiliser le code suivant pour afficher la bonne liste de case à cocher
$(document).ready(function(){
$('#band_type_choices').on('change', function() {
$('.checkboxlist').hide();
$('#checkboxlist_' + $(this).attr("name") ).css("display", "block");
});
Cependant rien ne se passe.
Voici mes options du menu déroulant:
<select id="band_type_choices">
<option vlaue="0"></option>
<option value="100" name="acoustic">Acoustic</option>
<option value="0" name="jazz">Jazz/Easy Listening</option>
<option value="0" name="acoustic_jazz">Acoustic + Jazz/Easy Listening</option>
<option value="0" name="party">Party</option>
<option value="0" name="acoustic_party">Acoustic + Party</option>
<option value="0" name="jazz_party">Jazz/Easy Listening + Party</option>
<option value="0" name="acoustic_jazz_party">Acoustic + Jazz/Easy Listening + Party</option>
</select>
et un exemple de l'une des listes:
<div class="checkboxlist" id="checkboxlist_acoustic" style="display:none;">
<input type="checkbox" class="checkbox keys" name="keys" value="100" />Keys<br>
<input type="checkbox" class="checkbox acou_guit" name="acou_guit" value="100" />Acoustic Guitar<br>
<input type="checkbox" class="checkbox drums" name="drums" value="100" />Drums<br>
<input type="checkbox" class="checkbox alt_sax" name="alt_sax" value="100" />Alto Sax<br>
<input type="checkbox" class="checkbox ten_sax" name="ten_sax" value="100" />Tenor Sax<br>
<input type="checkbox" class="checkbox clarinet" name="clarinet" value="100" />Clarinet<br>
<input type="checkbox" class="checkbox trombone" name="trombone" value="100" />Trombone<br>
<input type="checkbox" class="checkbox trumpet" name="trumpet" value="100" />Trumpet<br>
<input type="checkbox" class="checkbox flute" name="flute" value="100" />Flute<br>
<input type="checkbox" class="checkbox cello" name="cello" value="100" />Cello<br>
<input type="checkbox" class="checkbox violin" name="violin" value="100" />Violin<br>
</div>
- Qui n'est pas valide html. Il n'y a pas de nom d'attribut sur une sélection
Vous devez vous connecter pour publier un commentaire.
Dans votre code
this
se réfère à l'élément select pas à l'option sélectionnéeà se référer à l'option sélectionnée, vous pouvez le faire -
.text();
au lieu de.attr("name");
pour obtenir le texte de l'option sélectionnée comme demandé dans la questionPour toute personne qui vient à travers cette fin, comme moi.
Comme d'autres l'ont dit, nom n'est pas un attribut valide d'un option élément. Combinant l'on a accepté la réponse ci-dessus avec le la réponse à cette autre question, vous obtenez:
Tout d'abord
name
n'est pas un attribut valide d'unoption
élément. Au lieu de cela, vous pouvez utiliser unedata
paramètre, comme ceci:Le principal problème que vous avez est que le JS est à la recherche à la
name
attribut de laselect
élément, et non de l'option choisie. Essayez ceci:Note le
option:selected
sélecteur dans le contexte de laselect
qui a soulevé l'événement de changement.data-*
attributs sont disponibles. PS: frank n'est pas impoli quand on vient une constructives POV.signifie que le nom de la balise select pas le nom de l'option.
Pour obtenir le nom d'une option
Utilisant le nom de l'option n'est pas valide.
D'autres ont suggéré l'attribut data -, une alternative est une table de recherche
Ici de la "ce" se réfère à l'sélectionnez donc pas besoin de "trouver" l'option
JS:
CSS:
HTML:
Le Code est très Simple, Permet de Mettre Ce Code
Ici, Vous ne voulez pas utiliser
$(this).find().text()
, directement, vous pouvez mettre votre nom d'identification et d'ajouteroption:selected
avectext()
.Ce sera le retour de la suite nom de l'option. Mieux Essayer ce...