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?
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 + '"]')
Versuche dies:
$('select[name="' + name + '"] option:selected').val();
Dadurch wird der ausgewählte Wert Ihres Menüs erhalten.
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/
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 + ']'
oder du kannst es einfach tun
$('select[name=a[b]] option:selected').val()
anstatt
mySelect.toSource()
benutzen
mySelect.val()
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')
.
Versuchen Sie dies, um den Wert des ausgewählten Elements anhand des Elementnamens abzurufen
$("select[name=elementnamehere]").val();