web-dev-qa-db-de.com

Wie erhalte ich das ausgewählte Element anhand des Namens und dann den ausgewählten Wert aus einer Dropdownliste mit jQuery?

Ich kann mein select-Element anhand des Namens finden, aber ich habe Schwierigkeiten, den ausgewählten Wert zu finden.

Hier ist mein Code:

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

</select>

dann verwende ich in meinem Handler:

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

Das Ergebnis meines Ausdrucks im Protokoll ist:

object ({Länge: 0, prevObject: {0: ({}), Kontext: ({}), Länge: 1}, Kontext: ({}), Selektor: "select [name = a [b]"})

Irgendwelche Ideen, wie das geht?

11
dt1000

Ihr Selector ist ein bisschen aus, es fehlt der nachfolgende ]

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

möglicherweise müssen Sie den Namen auch in Anführungszeichen setzen:

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

Versuche dies:

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

Dadurch wird der ausgewählte Wert Ihres Menüs erhalten.

9
Gromer

Entfernen Sie das onchange -Ereignis aus dem HTML-Markup und binden Sie es in Ihr document-ready-Ereignis

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

und Skript

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

Arbeitsprobe: http://jsfiddle.net/gLaR8/3/

1
Shyju

Um zu den Antworten hier hinzuzufügen, stellen Sie sicher, dass zwischen select und [name... kein Leerzeichen steht.

Falsch:  

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

Recht:  

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

oder du kannst es einfach tun

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

anstatt

mySelect.toSource()

benutzen

mySelect.val()
0
ᾠῗᵲᄐᶌ

Die Antwort von MrOBrian zeigt, warum Ihr aktueller Code nicht funktioniert, und zwar mit den fehlenden nachfolgenden ]- und Anführungszeichen. Es gibt jedoch eine einfachere Möglichkeit, damit es funktioniert:

onchange='mySelectHandler(this)'

Und dann:

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

Oder besser noch, entfernen Sie den Inline-Event-Handler vollständig und binden Sie den Event-Handler mit jQuery:

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

Letzteres müsste in einem document.ready-Handler oder in einem Skriptblock sein, der nach dem select-Element angezeigt wird. Wenn Sie die gleiche Funktion für andere Selects ausführen möchten, ändern Sie einfach den Selector in einen für alle gültigen Typ, z. B. all Selects wäre $('select'), oder alle mit einer bestimmten Klasse wären $('select.someClass').

0
nnnnnn

Versuchen Sie dies, um den Wert des ausgewählten Elements anhand des Elementnamens abzurufen

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