Ответ 1
Ваш селектор немного выключен, ему не хватает ]
var mySelect = $('select[name=' + name + ']')
вам также может понадобиться поставить кавычки вокруг имени, например:
var mySelect = $('select[name="' + name + '"]')
Я могу найти свой элемент select по имени, но мне трудно найти выбранное значение, связанное с ним.
Вот мой код ниже:
<select name="a[b]" onchange='mySelectHandler("a[b]")'>
<option value='Choice 1'>Choice 1</option>
<option value='Choice 2'>Choice 2</option>
</select>
то в моем обработчике я использую:
function mySelectHandler(name){
var mySelect = $('select[name=' + name)
// try to get selected value
// alert ("selected " + mySelect.val())
console.log("object "+ mySelect.toSource());
}
Результатом моей печати в журнале является:
object ({length: 0, prevObject: {0: ({}), context: ({}), length: 1}, context: ({}), selector: "select [name = a [b]" })
Любые идеи относительно того, как это сделать?
Ваш селектор немного выключен, ему не хватает ]
var mySelect = $('select[name=' + name + ']')
вам также может понадобиться поставить кавычки вокруг имени, например:
var mySelect = $('select[name="' + name + '"]')
Попробуйте следующее:
$('select[name="' + name + '"] option:selected').val();
Это позволит получить выбранное значение вашего меню.
Удалите событие onchange
из HTML-разметки и привяжите его в событии готовности документа
<select name="a[b]" >
<option value='Choice 1'>Choice 1</option>
<option value='Choice 2'>Choice 2</option>
</select>
и Script
$(function(){
$("select[name='a[b]']").change(function(){
alert($(this).val());
});
});
Рабочий пример: http://jsfiddle.net/gLaR8/3/
вместо
mySelect.toSource()
использование
mySelect.val()
Ответ MrOBrian показывает, почему ваш текущий код не работает, с отсутствующим завершающим ]
и кавычками, но вот более простой способ заставить его работать:
onchange='mySelectHandler(this)'
И затем:
function mySelectHandler(el){
var mySelect = $(el)
// get selected value
alert ("selected " + mySelect.val())
}
Или еще лучше удалить обработчик события inline и связать обработчик событий с jQuery:
$('select[name="a[b]"]').change(function() {
var mySelect = $(this);
alert("selected " mySelect.val());
});
Последнее должно быть в обработчике document.ready или в блоке script, который появляется после элемента select. Если вы хотите запустить ту же функцию для других выборок, просто измените селектор на то, что относится ко всем, например, все выбранные будут $('select')
, или все с определенным классом будут $('select.someClass')
.
Попробуйте это, чтобы получить значение из элемента select по Element Name
$("select[name=elementnamehere]").val();
или вы просто можете сделать
$('select[name=a[b]] option:selected').val()
Чтобы добавить сюда ответы, убедитесь, что между select
и [name...
Неверно:
'select [name=' + name + ']'
^
Вправо:
'select[name=' + name + ']'