如何按名称获取所选元素,然后使用jQuery从下拉列表中获取所选值?

时间:2012-08-10 20:55:39

标签: jquery 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] “})

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

8 个答案:

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

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

答案 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 + ']'