jQueryドロップダウンから選択オプションを取得


1128

通常$("#id").val()、選択したオプションの値を返すために使用しますが、今回は機能しません。選択したタグにはIDがありますaioConceptName

HTMLコード

<label>Name</label>
<input type="text" name="name" />
<select id="aioConceptName">
    <option>choose io</option>
    <option>roma</option>
    <option>totti</option>
</select>

2
要素のマークアップを見せていただけませんか#aioConceptName
ホルヘ

2
この例jsfiddle.net/pAtVPで動作するので奇妙です、あなたの環境で発生するイベントを本当に確信していますか?
ホルヘ


11
遅い考えvalueですが、これら<option>のに属性を設定しない限り、.val()は機能しません。
Jacob Valenta 2013年

8
jQueryの最近のバージョン(1.9.1でテスト済み)では、このマークアップに問題はありません。上記の例で$("#aioConceptName").val()は、を返しますchoose io
Salman A

回答:


1846

ドロップダウンオプションの場合、おそらく次のようなものが必要です。

var conceptName = $('#aioConceptName').find(":selected").text();

val()トリックを行わない理由は、オプションをクリックしてもドロップダウンの値が変更されないためです。ドロップダウンの:selectedある選択したオプションにプロパティが追加されるだけです。


41
ああ、わかりました。HTMLで質問を更新しました。現在、この回答は無関係です。実際のところ、.val()あなたの場合にはうまくいくはずです-あなたは他の場所でエラーを起こさなければなりません
エリオットボンネビル2012年

13
以下のためにval()、なぜ使用しませんかvar conceptVal = $("#aioConceptName option").filter(":selected").val();
テスター

61
単純なのはvar conceptVal = $("#aioConceptName option:selected").val()どうですか?
KlemenTušar2013年

5
以前にドロップダウンを取得したselectで選択したオプションを見つけるのに、これはまだ役に立ちました。たとえば、var mySelect = $('#mySelect'); / * ...より多くのコードが発生します... * / var selectedText = mySelect.find(':selected').text();
Charles Wood

18
実際、.val()が彼のために機能していない理由は、彼が実際にオプションに値を与えなかったためです、それが彼があなたのメソッドを使って選択されたテキストを取得しなければならないので、別の修正が変更されているでしょう<option> choose io </ option> to <option value = 'choose io'> choose io </ option>あなたの解決策はおそらくより速くてより実用的ですが、私はとにかくこれを述べて彼の理解を深めると考えましたそれが彼にとってうまくいかなかった理由。
ジョーダンラプリーズ2016年

342

各オプションの値を設定します

<select id="aioConceptName">
    <option value="0">choose io</option>
    <option value="1">roma</option>
    <option value="2">totti</option>
</select>

$('#aioConceptName').val()属性を.val()返すため、機能しませんでしたvalue。適切に機能させるには、それぞれにvalue属性を設定する必要があります<option>

これ$('#aioConceptName').val()で、このすべての:selectedブードゥー教が他の人から提案されている代わりに電話をかけることができます。


12
警告:オプションが選択されていない場合は、$('#aioConceptName').val()null / "undefined"を返します
ゴードン

これにより、$( '#myselect')。val()が正しいことが保証されました。
zzapper 2014年

4
私の選択オプションの1つは特別なpromptオプション<option>Please select an option</option>です。私の場合、空の値属性を追加することは問題ではありませんでしたが、場合によっては、値属性<option value="">Please...</option>がないことは理にかなっていると思います。しかし、+ 1は、あなたの言い回しの言葉遣いが私を笑顔にしたからです。
Cyril Duchon-Doris

内のテキストval()value代わりにを選択しませんoptionか?つまり、の1代わりに選択しますroma
デスロック

4
@deathlockそれがの要点です.val()。テキストの操作/使用を検討している場合は$(":selected).text()、値とテキストを同じに使用または設定します。
Jacob Valenta 2017年

162

私はこの質問に遭遇し、Elliot BOnnevilleの回答のより簡潔なバージョンを作成しました。

var conceptName = $('#aioConceptName :selected').text();

または一般的に:

$('#id :pseudoclass')

これにより、追加のjQuery呼び出しが節約され、すべてを1つのショットで選択し、より明確になります(私の意見)。


1
@JohnCondeメタで受け入れられた回答はあなたに同意しません:meta.stackexchange.com/questions/87678/…。私の意見では、エドは良い答えを出し、ちょうどいくつかの追加の参照を提供しました。
itsbruce

彼らはそれを許可することができますが、それはまだ悪いリソースです
John Conde

1
w3schoolsリンクを削除しましたが、これは厳密に必要なわけではなく、「jQuery pseduoクラス」のGoogle検索で多くの情報が提供されます。
Ed Orsi

@EdOrsi:追加のjQuery呼び出しを節約しますが、ネイティブDOM querySelectorAll()メソッドによって提供されるパフォーマンスの向上を利用できなくなります(jQueryのドキュメントを参照)。したがって、Eliotのソリューションよりも遅くなるはずです。
Alexander Abakumov

.find(':selected')イベントに添付されたコールバックから呼び出すことができるので、おそらく使用することをお勧めします...のような$('#aioConceptname').bind('change', function(el) { console.log ( $(el).find(':selected').text() ); });
Armstrongest

58

これをお試しください...

$("select#id_of_select_element option").filter(":selected").val();

またはこれはテキスト用...

$("select#id_of_select_element option").filter(":selected").text();

49

イベントコンテキストの場合、jQueryでは、次の
$(this).find('option:selected')ように、選択したオプション要素を取得できます。

$('dropdown_selector').change(function() {
    //Use $option (with the "$") to see that the variable is a jQuery object
    var $option = $(this).find('option:selected');
    //Added with the EDIT
    var value = $option.val();//to get content of "value" attrib
    var text = $option.text();//to get <option>Text</option> content
});

編集する

PossessWithinで述べたように、私の答えは質問に答えるだけです:選択した「オプション」を選択する方法。

次に、オプション値を取得するには、を使用しますoption.val()


2
完璧!$(this).find('option:selected').val()オプション要素の値$(this).find('option:selected').text()を取得したり、テキストを取得したりするには、最後に追加する必要があることを忘れないでください。:)
ディエゴフォルテス



16

選択の値(テキストではない)を読み取る:

var status = $("#Status").val();
var status = $("#Status")[0].value;
var status = $('#Status option:selected').val();

選択を無効にする方法は? どちらのバリアントでも、値は以下を使用して変更できます。

ユーザーはドロップダウンを操作できません。そして、彼は他にどんなオプションが存在するかもしれないか知りません。

$('#Status').prop('disabled', true);

B

ユーザーはドロップダウンにオプションを表示できますが、すべて無効になっています。

$('#Status option').attr('disabled', true);

この場合、$("#Status").val() より小さいバージョンのjQueryでのみ機能します1.9.0。他のすべてのバリアントは機能します。

無効になっている選択を更新する方法は?

コードビハインドからも、selectの値を更新できます。ユーザーに対してのみ無効です:

$("#Status").val(2);

場合によっては、イベントを発生させる必要があります。

$("#Status").val(2).change();

11
<select id="form-s" multiple="multiple">
    <option selected>city1</option>
    <option selected value="c2">city2</option>
    <option value="c3">city3</option>
</select>   
<select id="aioConceptName">
    <option value="s1" selected >choose io</option>
    <option value="s2">roma </option>
    <option value="s3">totti</option>
</select>
<select id="test">
    <option value="s4">paloma</option>
    <option value="s5" selected >foo</option>
    <option value="s6">bar</option>
</select>
<script>
$('select').change(function() {
    var a=$(':selected').text(); // "city1city2choose iofoo"
    var b=$(':selected').val();  // "city1" - selects just first query !
    //but..
    var c=$(':selected').map(function(){ // ["city1","city2","choose io","foo"]
        return $(this).text();
    }); 
    var d=$(':selected').map(function(){ // ["city1","c2","s1","s5"]
        return $(this).val();
    });
    console.log(a,b,c,d);
});
</script>

:)良いことは:selected.. val()またはtext()が複数の選択オプションで正しく機能しないmap()ことです。
Ol Sen

10

次の構文を使用する必要があります。

var value = $('#Id :selected').val();

だからこのコードを試してください:

var values = $('#aioConceptName :selected').val();

Fiddleでテストできます:http : //jsfiddle.net/PJT6r/9/

この投稿でこの回答について参照してください


9

jQueryを使用して、changeイベントを追加し、そのハンドラー内で選択された値またはテキストを取得します。

選択したテキストが必要な場合は、次のコードを使用してください:

$("#aioConceptName").change(function () {
    alert($("#aioConceptName :selected").text())
});

または、選択した値が必要な場合は、次のコードを使用してください:

$("#aioConceptName").change(function () {
    alert($("#aioConceptName :selected").attr('value'))
});

9

jQuery.val()選択要素にも関数を使用します。

.val()メソッドは主に、input、select、textareaなどのフォーム要素の値を取得するために使用されます。select要素のnull場合、オプションが選択されていない場合に返され、少なくとも1つがあり、multiple属性が存在するためにさらに選択できる場合は、選択された各オプションの値を含む配列が返されます。

$(function() {
  $("#aioConceptName").on("change", function() {
    $("#debug").text($("#aioConceptName").val());
  }).trigger("change");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<select id="aioConceptName">
  <option>choose io</option>
  <option>roma</option>
  <option>totti</option>
</select>
<div id="debug"></div>


8

その最良の答えを見つけた人はだめです。

使用してみてください:

  $( "#aioConceptName option:selected" ).attr("value");

最近のプロジェクトで私のために働くので、それを見る価値があります。


7

これだけでうまくいくはずです:

var conceptName = $('#aioConceptName').val();

6

単純明快で非常に簡単:

あなたのドロップダウン

<select id="aioConceptName">
    <option>choose io</option>
    <option>roma</option>
    <option>totti</option>
</select>

選択した値を取得するためのjqueryコード

$('#aioConceptName').change(function() {
    var $option = $(this).find('option:selected');

    //Added with the EDIT
    var value = $option.val(); //returns the value of the selected option.
    var text = $option.text(); //returns the text of the selected option.
});

4

次のようにしてデバッグを試すことができます。

console.log($('#aioConceptName option:selected').val())

4

選択したタグのを取得する場合

 $('#id_Of_Parent_Selected_Tag').find(":selected").val();

そして、テキストを取得したい場合は、次のコードを使用します。

 $('#id_Of_Parent_Selected_Tag').find(":selected").text();

例えば:

<div id="i_am_parent_of_select_tag">
<select>
        <option value="1">CR7</option>
        <option value="2">MESSI</option>
</select>
</div>


<script>
 $('#i_am_parent_of_select_tag').find(":selected").val();//OUTPUT:1 OR 2
 $('#i_am_parent_of_select_tag').find(":selected").text();//OUTPUT:CR7 OR MESSI
</script>

2

テキストノードの代わりに 'value'属性を取得したい場合は、これでうまくいきます。

var conceptName = $('#aioConceptName').find(":selected").attr('value');

これは部分的にのみ解決策です-各オプションの値を設定することも必要です-これはすでにJacob Valettaの回答
David

2

これに挑戦

$(document).ready(function() {

    $("#name option").filter(function() {
        return $(this).val() == $("#firstname").val();
    }).attr('selected', true);

    $("#name").live("change", function() {

        $("#firstname").val($(this).find("option:selected").attr("value"));
    });
});


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<select id="name" name="name"> 
<option value="">Please select...</option> 
<option value="Elvis">Elvis</option> 
<option value="Frank">Frank</option> 
<option value="Jim">Jim</option> 
</select>

<input type="text" id="firstname" name="firstname" value="Elvis" readonly="readonly">

2
$('nameofDropDownList').prop('selectedIndex', whateverNumberasInt);

DDLをインデックス付きの配列として想像してください。1つのインデックスを選択しています。JSで設定するものを選択します。




1

同じclass =名の選択をフェッチするには、これを行うことができ、選択オプションが選択されているかどうかを確認します。

var bOK = true;
$('.optKategorien').each(function(index,el){
    if($(el).find(":selected").text() == "") {
        bOK = false;
    }
});

1

私は同じ問題を抱えていて、それが私のケースで機能していない理由を理解しました
HTMLページが異なるHTMLフラグメントに分割され、の同じIDを持つ別の入力フィールドがselectあるため、val()が常に空になっていることがわかりました
これにより、同様の問題を抱えているすべての人の日が節約されることを願っています。


確かに、これは私の問題に私を起こしました。私はデータターゲットでqty-fieldを使用し、ID自体でqty_fieldを使用していました。必ず基本を2回以上確認してください。
cdsaenz

1

$( "#id")。valを使用するには、次のようにオプションに値を追加する必要があります。

<label>Name</label>
<input type="text" name="name" />
<select id="aioConceptName">
    <option value="choose">choose io</option>
</select>

それ以外の場合は使用できます

   $("#aioConceptName").find(':selected').text();

お役に立てれば幸いです。


1

この問題の簡単な解決策を次に示します。

$("select#aioConceptName").change(function () {
           var selectedaioConceptName = $('#aioConceptName').find(":selected").val();;
           console.log(selectedaioConceptName);
        });

1
var selectedaioConceptName = $('#aioConceptName option:selected').val();別のfind()の使用よりも優れている
Sadee

0

おそらく、この種のシナリオで最善の策は、jQueryのchangeメソッドを使用して、現在選択されている値を見つけることです。

$('#aioConceptName').change(function(){

   //get the selected val using jQuery's 'this' method and assign to a var
   var selectedVal = $(this).val();

   //perform the rest of your operations using aforementioned var

});

特定の選択フィールドで選択したオプションごとに機能を実行できるため、この方法をお勧めします。

お役に立てば幸いです。


0

通常、選択した値を取得するだけでなく、何らかのアクションを実行する必要があります。では、すべてのjQueryマジックを回避して、選択した値を引数としてアクション呼び出しに渡すだけではどうでしょうか。

<select onchange="your_action(this.value)">
   <option value='*'>All</option>
   <option ... />
</select>

0

正確に選択されたオプションを使用して選択できます:以下はinnerTextを示します

$("select#aioConceptName > option:selected").text()

以下はあなたに価値を与えるでしょう。

$("select#aioConceptName > option:selected").val()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.