我能够按名称找到我的选择元素,但是我找不到与之关联的选定值。
以下是我的代码:
<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] “})
关于如何做到这一点的任何想法?
答案 0 :(得分:27)
您的选择器有点偏离,它缺少尾随]
var mySelect = $('select[name=' + name + ']')
您可能还需要在名称周围加上引号,如下所示:
var mySelect = $('select[name="' + name + '"]')
答案 1 :(得分:9)
试试这个:
$('select[name="' + name + '"] option:selected').val();
这将获得菜单的选定值。
答案 2 :(得分:1)
从HTML标记中删除onchange
事件,并将其绑定在文档就绪事件
<select name="a[b]" >
<option value='Choice 1'>Choice 1</option>
<option value='Choice 2'>Choice 2</option>
</select>
和脚本
$(function(){
$("select[name='a[b]']").change(function(){
alert($(this).val());
});
});
答案 3 :(得分:0)
而不是
mySelect.toSource()
使用
mySelect.val()
答案 4 :(得分:0)
MrOBrian的回答显示了为什么您当前的代码不起作用,缺少尾随]
和引号,但这是一种更简单的方法:
onchange='mySelectHandler(this)'
然后:
function mySelectHandler(el){
var mySelect = $(el)
// get selected value
alert ("selected " + mySelect.val())
}
或者更好的是,完全删除内联事件处理程序并使用jQuery绑定事件处理程序:
$('select[name="a[b]"]').change(function() {
var mySelect = $(this);
alert("selected " mySelect.val());
});
最后一个需要在document.ready处理程序中或在select元素之后出现的脚本块中。如果你想为其他选择运行相同的功能,只需将选择器更改为适用于所有选项的选项,例如,所有选择将是$('select')
,或者所有具有特定类的选项将是{ {1}}。
答案 5 :(得分:0)
尝试使用元素名称
从select元素中获取值$("select[name=elementnamehere]").val();
答案 6 :(得分:0)
或者你可以简单地做
$('select[name=a[b]] option:selected').val()
答案 7 :(得分:0)
要在此处添加答案,请确保select
和[name...
错误:
'select [name=' + name + ']'
^
右:
'select[name=' + name + ']'