如何按名称获取所选元素,然后使用jQuery从下拉列表中获取所选值?
我能够按名称找到我的选择元素,但是我找不到与之关联的选定值。
这是我的代码如下:
Choice 1 Choice 2
然后,在我使用的处理程序中:
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();
这将获得菜单的选定值。
从HTML标记中删除onchange
事件并将其绑定在文档就绪事件中
和脚本
$(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()) }
或者更好的是,完全删除内联事件处理程序并使用jQuery绑定事件处理程序:
$('select[name="a[b]"]').change(function() { var mySelect = $(this); alert("selected " mySelect.val()); });
最后一个需要在document.ready处理程序中或在select元素之后出现的脚本块中。 如果你想为其他选择运行相同的function,只需将选择器更改为适用于所有选项的选项,例如, 所有选择将是$('select')
,或者所有具有特定类的选项将是$('select.someClass')
。
尝试使用元素名称从select元素中获取值
$("select[name=elementnamehere]").val();
或者你可以干脆做
$('select[name=a[b]] option:selected').val()
要在此处添加答案,请确保select
和[name...
之间没有空格
错误:
'select [name=' + name + ']' ^
对:
'select[name=' + name + ']'