web-dev-qa-db-fra.com

Comment obtenir l'élément sélectionné par son nom, puis la valeur sélectionnée dans une liste déroulante utilisant jQuery?

Je peux trouver mon élément select par son nom, mais je ne parviens pas à trouver la valeur sélectionnée qui lui est associée.

Voici mon code ci-dessous:

<select  name="a[b]" onchange='mySelectHandler("a[b]")'>
     <option value='Choice 1'>Choice 1</option>
     <option value='Choice 2'>Choice 2</option>

</select>

puis, dans mon gestionnaire, j'utilise:

function mySelectHandler(name){
     var mySelect = $('select[name=' + name)
     // try to get selected value
     // alert ("selected " + mySelect.val())
     console.log("object "+ mySelect.toSource());
  }

Le résultat de mon impression dans le journal est:

objet ({longueur: 0, prevObject: {0: ({}), contexte: ({}), longueur: 1}, contexte: ({}), sélecteur: "select [nom = a [b]"})

Des idées sur la façon de faire cela?

11
dt1000

Votre sélecteur est un peu éteint, il manque le ] final

var mySelect = $('select[name=' + name + ']')

vous devrez peut-être aussi mettre des guillemets autour du nom, comme ceci:

var mySelect = $('select[name="' + name + '"]')
26
MrOBrian

Essaye ça:

$('select[name="' + name + '"] option:selected').val();

Cela va obtenir la valeur sélectionnée de votre menu.

9
Gromer

Supprimer l'événement onchange de la balise HTML et le lier à votre événement de préparation de document

<select  name="a[b]" >
     <option value='Choice 1'>Choice 1</option>
     <option value='Choice 2'>Choice 2</option>
</select>​

et script

$(function(){    
    $("select[name='a[b]']").change(function(){
       alert($(this).val());        
    }); 
});

Échantillon de travail: http://jsfiddle.net/gLaR8/3/

1
Shyju

Pour ajouter des réponses ici, assurez-vous qu'il n'y a pas d'espace entre select et [name...

Faux:  

'select [name=' + name + ']'
       ^

Droite:  

'select[name=' + name + ']'
0
haakym

ou vous pouvez simplement faire

$('select[name=a[b]] option:selected').val()
0
Karthik Sundharesan

au lieu de

mySelect.toSource()

utilisation

mySelect.val()
0
ᾠῗᵲᄐᶌ

La réponse de MrOBrian montre pourquoi votre code actuel ne fonctionne pas, avec les ] et les guillemets manquants, mais voici un moyen plus simple de le faire fonctionner:

onchange='mySelectHandler(this)'

Et alors:

function mySelectHandler(el){
     var mySelect = $(el)
     // get selected value
     alert ("selected " + mySelect.val())
  }

Ou mieux encore, supprimez complètement le gestionnaire d'événements en ligne et liez-le avec jQuery:

$('select[name="a[b]"]').change(function() {
    var mySelect = $(this);
    alert("selected " mySelect.val());
});

Ce dernier doit être dans un gestionnaire document.ready ou dans un bloc de script qui apparaît après l'élément select. Si vous souhaitez exécuter la même fonction pour d'autres sélections, il suffit de changer le sélecteur pour que quelque chose s'applique à tous, par exemple, all selects serait $('select'), ou tous ceux d'une classe particulière seraient $('select.someClass').

0
nnnnnn

Essayez ceci pour obtenir la valeur de l'élément sélectionné par son nom.

$("select[name=elementnamehere]").val();
0