2012-08-10 79 views
10

我能够通过名称找到我选择的元素,但我无法找到与其关联的选定值。如何通过名称获取所选元素,然后使用jQuery从下拉菜单中获取所选值?

这里是我下面的代码:

<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]”})

A有没有关于如何做到这一点的想法?

回答

21

你的选择是有点过,它缺少尾随]

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

,你可能还需要加引号的名称,像这样:的

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

代替

mySelect.toSource() 

使用

mySelect.val() 
9

试试这个:

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

这将让你的菜单中选择的值。

+0

怎么能得到所有的名字? – 2016-05-17 06:54:04

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/

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')

0

试试这个由元素名称来获得从选择的元素值

$("select[name=elementnamehere]").val(); 
0

,或者你可以简单地做

$('select[name=a[b]] option:selected').val() 
0

要添加到答案在这里,保证还有的select[name...之间没有空格

错误:

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

右:

'select[name=' + name + ']' 
相关问题