jQuery获取选定的选项值(不是文本,而是属性“值”)


156

好的,我有以下代码:

<select name="selector" id="selector">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>

我想获取所选选项的值。示例:选择了“选项2”,其值为“ 2”。“ 2”是我需要获取的值,而不是“选项2”。


演示示例教程: freakyjolly.com/… 设置演示示例教程freakyjolly.com/… 单个和多个Selectbox
代码间谍

Answers:


271

04/2020:更正了旧答案

在所选选项上使用:selected伪选择器,然后使用.val函数获取选项的值。

$('select[name=selector] option').filter(':selected').val()

旁注:使用过滤:selected器比直接在第一个查询中使用选择器更好。

如果在变更处理程序中,则可以简单this.value地使用它来获取选定的选项值。有关更多选项,请参见演示。

//ways to retrieve selected option and text outside handler
console.log('Selected option value ' + $('select option').filter(':selected').val()); 
console.log('Selected option value ' + $('select option').filter(':selected').text());

$('select').on('change', function () {
  //ways to retrieve selected option and text outside handler
  console.log('Changed option value ' + this.value);
  console.log('Changed option text ' + $(this).find('option').filter(':selected').text());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<select>
  <option value="1" selected>1 - Text</option>
  <option value="2">2 - Text</option>
  <option value="3">3 - Text</option>
  <option value="4">4 - Text</option>
</select>

旧答案:

编辑:正如许多人指出的那样,这不会返回所选的选项值。

~~使用.val获取所选选项的值。见下文,

$('select[name=selector]').val()~~

5
做您的测试:$('select[name=selector]').change(function() { alert($(this).val()); });
KingRider 2015年

4
请注意,如果所选选项未value指定属性,<option>label</option>则将返回标签(即)。可能并不总是您想要的。当然,在大多数应用中,值是指定的。
捷克学

115

我只是想分享我的经验

为了我,

$('#selectorId').val()

返回null。

我不得不用

$('#selectorId option:selected').val()


1
那是特定于浏览器的情况吗?chrome的最新版本是否不允许它,或者是不支持它的IE?
TheodorSolbjørg2015年

1
它是最新版本的Chrome。也许也在Firefox中,但不确定。
大卫·托雷斯

不知道为什么$('#selectorId option:selected').val()对我没用。相反,我使用了$('select option:selected').val()
Francisco Quintero

1
@Francisco问题在于,$('select option:selected').val()它将采用HTML代码中第一个选择器的值。而$('#selectorId option:selected').val()您可以使用指定ID的选择器的值。仔细检查错别字。这是显示我刚才说的示例:codepen.io/anon/pen/Nqgqyz
David Torres


9

您需要将一个ID添加到您的选择中。然后:
$('#selectorID').val()


我添加了ID,只是忘了在此处添加。
n00b 2012年

1
从我阅读的内容来看,使用ID作为选择器是最快的方法。
马库斯(Marcus)

5

试试这个:

$(document).ready(function(){
    var data= $('select').find('option:selected').val();
});

要么

var data= $('select').find('option:selected').text();

4

您可以使用jquery如下

脚本

  $('#IDOfyourdropdown').change(function(){
    alert($(this).val());
  });

FIDDLE在这里


2

对于这样的选择

<select class="btn btn-info pull-right" id="list-name" style="width: auto;">
   <option id="0">CHOOSE AN OPTION</option>
   <option id="127">John Doe</option>
   <option id="129" selected>Jane Doe</option>

...您可以通过以下方式获取ID:

$('#list-name option:selected').attr('id');

或者您可以改用价值,并以简单的方式获取价值...

<select class="btn btn-info pull-right" id="list-name" style="width: auto;">
   <option value="0">CHOOSE AN OPTION</option>
   <option value="127">John Doe</option>
   <option value="129" selected>Jane Doe</option>

像这样:

$('#list-name').val();

2

我的选择之一没有价值:<option>-----</option>。我正在尝试使用,if (!$(this).val()) { .. }但结果却很奇怪。事实证明,如果元素value上没有属性<option>,它将返回其中的文本而不是空字符串。如果您不想val()返回任何内容供您选择,请确保添加value=""


0

看例子:

    <select class="element select small" id="account_name" name="account_name"> 

        <option value="" selected="selected">Please Select</option>           
        <option value="paypal" >Paypal</option>
        <option value="webmoney" >Webmoney</option>

    </select>

 <script type="text/javascript">

        $(document).ready(function(){ 
             $('#account_name').change(function(){
               alert($(this).val());                                                          
             });
        });
 </script>

0
$('#selectorID').val();

要么

$('select[name=selector]').val();

要么

$('.class_nam').val();

@FarhadBagherlo“保持键入” 不是有用的编辑注释!请总结您所做的更改,以使编辑历史记录的读者无需检查每个更改的字符即可了解您所做的事情。谢谢!
jpaugh


0
 $(document ).ready(function() {
    $('select[name=selectorname]').change(function() { 
     alert($(this).val());});
 });

尽管这段代码可以解决问题,但是最好为那些可能不了解这段代码的人添加详细说明并解释它是如何工作的。
paper1111

@ paper1111这是简单的功能。我可以解释一下是否需要这样做。$('select [name =这里是选择框名称]).change()-函数的意思是当我们更改选择框时,选项功能将起作用。$(this).val()-返回选定的选项值
TuranZamanlı18年

0

链接

使用jQuery val()获取选定值,并使用text()来获取选项文本。

    <select id="myDropDown" class="form-control">
        <option value="0">Select Value 0</option>
        <option value="8">Option value 8</option>
        <option value="5">Option value 5</option>
        <option value="4">Option value 4</option>
    </select>

选择下拉菜单中的更改事件

        $("#myDropDown").change(function () {

            // Fetching Value
            console.log($(this).val());

            // Fetching Text
            console.log($(this).find('option:selected').text());

            alert('Value: '+$(this).val()+' | Text: '+$(this).find('option:selected').text());
        });

按钮点击

        $("button").click(function () {

        // Fetching Value
            console.log($("#myDropDown").val());

    // Fetching Text
            console.log($('#myDropDown option:selected').text());

            alert('Value: '+$("#myDropDown").val()+' | Text: '+$('#myDropDown option:selected').text());
        });
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.