如何按名称获取所选元素,然后使用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 + ']'