如何使用jQuery通过名称获取选定元素,然后从下拉菜单中获取选定值?

19

我能够通过名称找到我的选择元素,但是我无法找到与其关联的选定值。

以下是我的代码:

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

有什么办法可以做到这一点吗?

8个回答

35

你的选择器有点问题,缺少末尾的]符号。

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

你可能还需要在名称周围加上引号,像这样:

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

14

试试这个:

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

这将获取您的菜单的选定值。


如何获取所有的名称? - Santosh Jadi

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

或者你可以简单地执行

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

0
补充一下这里的答案,确保在select[name...之间没有空格。

错误:

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

正确:

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

0

替代

mySelect.toSource()

使用

mySelect.val()

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


0

尝试使用元素名称从选择元素中获取值

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接