17

我可以按名称找到我的选择元素,但我无法找到与其关联的选定值。

下面是我的代码:

<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());
  }

我打印到日志的结果是:

对象 ({length:0, prevObject:{0:({}), context:({}), length:1}, context:({}), selector:"select[name=a[b]"})

关于如何做到这一点的任何想法?

4

8 回答 8

33

您的选择器有点偏离,它缺少尾随]

var mySelect = $('select[name=' + name + ']')

您可能还需要在名称周围加上引号,如下所示:

var mySelect = $('select[name="' + name + '"]')
于 2012-08-10T20:58:43.013 回答
14

试试这个:

$('select[name="' + name + '"] option:selected').val();

这将获得菜单的选定值。

于 2012-08-10T21:00:04.720 回答
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());        
    }); 
});

工作样本:http: //jsfiddle.net/gLaR8/3/

于 2012-08-10T21:02:41.833 回答
0

代替

mySelect.toSource()

采用

mySelect.val()
于 2012-08-10T20:59:53.613 回答
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'),或者所有具有特定类的都是$('select.someClass')

于 2012-08-10T21:03:19.430 回答
0

试试这个以通过元素名称从选择元素中获取值

$("select[name=elementnamehere]").val();
于 2014-01-09T11:47:19.517 回答
0

或者你可以简单地做

$('select[name=a[b]] option:selected').val()
于 2016-08-11T18:52:46.260 回答
0

select要在此处添加答案,请确保和之间没有空格[name...

错误的:

'select [name=' + name + ']'
       ^

对:

'select[name=' + name + ']'
于 2016-11-22T13:31:42.943 回答