jQueryは選択されたオプション値を取得します(テキストではなく属性 'value')


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/… 単一および複数の選択ボックス
コードスパイ

回答:


270

2020年4月:古い回答を修正

使用選択:選択したオプションに擬似セレクタを使用して、.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

4
選択したオプションにvalue属性が指定されていない場合、ラベル(つまり<option>label</option>)が返されることに注意してください。常にあなたが望むものであるとは限りません。もちろん、ほとんどのアプリケーションでは、値が指定されています。
チェコ語2017

115

私の経験を共有したかっただけです

私のために、

$('#selectorId').val()

nullを返しました。

私は使用しなければなりませんでした

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


1
そのブラウザ固有のケースでしたか?Chromeの最新バージョンはそれを許可しませんでしたか、それともそれをサポートしていないIEでしたか?
TheodorSolbjørg、2015年

1
Chromeの最新バージョンでした。Firefoxにもあるかもしれませんが、よくわかりません。
David Torres、

なぜ$('#selectorId option:selected').val()うまくいかなかったのかわからない。代わりに使用しました$('select option:selected').val()
Francisco Quintero 2015年

1
@Francisco問題は$('select option:selected').val()、HTMLコードの最初のセレクターの値を取ることです。一方、$('#selectorId option:selected').val()あなたが指定したセレクタの値を持つことができます。タイプミスを再確認します。ここに私が言ったことを示す例があります:codepen.io/anon/pen/Nqgqyz
David Torres


9

選択にIDを追加する必要があります。次に:
$('#selectorID').val()


IDを追加しました。ここに追加するのを忘れました。
n00b

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

私のオプションの1つに値がありませんでした:<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 2017


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

このコードは問題を解決することができますが、このコードの一部を理解していない可能性のある人のために、詳細を追加して、それがどのように機能するかを説明するのが最善です。
paper1111

@ paper1111これは単純な関数です。これが必要かどうかを説明できます。$( 'select [name = here is select box name]).change()-functionこれは、選択ボックスのオプションを変更したときに関数が機能することを意味します。$(this).val()-選択されたオプション値を返します
TuranZamanlı2018年

0

ソースリンク

使用jQueryのvalが()するGET価値とし、選択したテキストを()オプションのテキストを取得します。

    <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());
        });
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.