JavaScriptを使用してドロップダウンリストで選択した値を取得する


1784

JavaScriptを使用してドロップダウンリストから選択した値を取得するにはどうすればよいですか?

以下の方法を試しましたが、すべて値ではなく選択したインデックスを返します。

var as = document.form1.ddlViewBy.value;
var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].value;

回答:


2928

次のようなselect要素がある場合:

<select id="ddlViewBy">
  <option value="1">test1</option>
  <option value="2" selected="selected">test2</option>
  <option value="3">test3</option>
</select>

このコードを実行する:

var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].value;

strUserなります2。あなたが実際に欲しいのはtest2なら、これを行います:

var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].text;

どちらになるだろうstrUserことtest2


13
@ R11G、使用onchange:)
AlexJaa 14

142
var strUser = e.options[e.selectedIndex].value;理由だけではないvar strUser = e.value ?
Red Pea 2014

18
@TheRedPea-おそらく、この回答が書かれたときに、古いバージョンのNetscape Navigatorに対応する必要があった可能性があったため(リモートであっても)、単一の選択の値にアクセスするための同じように古い方法が使用されました。しかし、私はそれについて推測しているだけです。;-)
RobG、2015年

12
私は次のように使用しました:var e = document.getElementById("ddlViewBy").value;
Fathur Rohim

3
である必要がありe.target.options[e.target.selectedIndex].text、それはここにすべての答えで間違っている理由はわかりません...
オジー

373

プレーンJavaScript:

var e = document.getElementById("elementId");
var value = e.options[e.selectedIndex].value;
var text = e.options[e.selectedIndex].text;

jQuery:

$("#elementId :selected").text(); // The text content of the selected option
$("#elementId :selected").val(); // The value of the selected option

AngularJS:(http://jsfiddle.net/qk5wwyct):

// HTML
<select ng-model="selectItem" ng-options="item as item.text for item in items">
</select>
<p>Text: {{selectItem.text}}</p>
<p>Value: {{selectItem.value}}</p>

// JavaScript
$scope.items = [{
  value: 'item_1_id',
  text: 'Item 1'
}, {
  value: 'item_2_id',
  text: 'Item 2'
}];

1
私がこれを試すと、ドロップダウンのすべてのオプションのテキストが返されるので、私は何か間違っているに違いありません。
ケビン

6
これは私にとっては異なる方法で機能しました。$( "#ddlViewBy:selected")。val()が選択されていない場合
Ruwantha

1
element.options[e.selectedIndex].valueでなければなりませんelement.options[element.selectedIndex].value
クリストファー

まだ便利です-バリエーション/言語を書いてくれてありがとう!さて、Office JS APIドロップダウンに相当するものしか知らなかった場合
Cindy Meister

である必要がありe.target.options[e.target.selectedIndex].text、それはここにすべての答えで間違っている理由はわかりません...
オジー

174
var strUser = e.options[e.selectedIndex].value;

これは正解であり、価値を与えるはずです。あなたが求めているテキストですか?

var strUser = e.options[e.selectedIndex].text;

だからあなたは用語が明確です:

<select>
    <option value="hello">Hello World</option>
</select>

このオプションには:

  • インデックス= 0
  • 値=こんにちは
  • テキスト= Hello World

1
私はJavaScriptの「.value」が値を返すはずだと思っていましたが、asp.netの.SelectedValueが返すものとして「.text」だけが返されます。与えられた例に感謝します!
Fire Hand、

1
はい-オプションの値をそれと同じにします。より単純-上記の人は、彼の最初のあいまいさを補うためにより多くのコードを書く必要があります。
Andrew Koper 2013

である必要がありe.target.options[e.target.selectedIndex].text、それはここにすべての答えで間違っている理由はわかりません...
オジー

62

次のコードは、JavaScriptを使用した入力/選択フィールドからの値の取得/出力に関連するさまざまな例を示しています。

ソースリンク

ワーキングJavascriptをjQueryの&デモ

ここに画像の説明を入力してください

ここに画像の説明を入力してください

 <select id="Ultra" onchange="run()">  <!--Call run() function-->
     <option value="0">Select</option>
     <option value="8">text1</option>
     <option value="5">text2</option>
     <option value="4">text3</option>
</select><br><br>
TextBox1<br>
<input type="text" id="srt" placeholder="get value on option select"><br>
TextBox2<br>
<input type="text" id="rtt"  placeholder="Write Something !" onkeyup="up()">

次のスクリプトは、選択されたオプションの値を取得し、テキストボックスに入力します1

<script>
    function run() {
        document.getElementById("srt").value = document.getElementById("Ultra").value;
    }
</script>

次のスクリプトはテキストボックス2から値を取得し、その値で警告しています

<script>
    function up() {
        //if (document.getElementById("srt").value != "") {
            var dop = document.getElementById("srt").value;
        //}
        alert(dop);
    }
</script>

次のスクリプトは関数から関数を呼び出しています

<script>
    function up() {
        var dop = document.getElementById("srt").value;
        pop(dop); // Calling function pop
    }

    function pop(val) {
        alert(val);
    }?
</script>

onchange=run(this.value)または(this.text)より有益なことができます。
Berci


22

純粋にInternet Explorer用に作成されたコードに出くわした場合、次のように表示されます。

var e = document.getElementById("ddlViewBy");
var strUser = e.options(e.selectedIndex).value;

上記をFirefoxなどで実行すると、「is not a function」エラーが発生します。これは、Internet Explorerでは、[]の代わりに()を使用できるためです。

var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].value;

正しい方法は角括弧を使用することです。


19
<select id="Ultra" onchange="alert(this.value)"> 
 <option value="0">Select</option>
 <option value="8">text1</option>
 <option value="5">text2</option>
 <option value="4">text3</option>
</select>

要素内からアクセスする場合、任意の入力/フォームフィールドで「this」キーワードを使用できます。これにより、domツリーでフォームを検索し、フォーム内でこの要素を検索する必要がなくなります。


説明が正しいでしょう。
Peter Mortensen

14

初心者は、ID属性ではなくNAME属性を使用して、selectの値にアクセスする可能性があります。IDを取得する前であっても、すべてのフォーム要素には名前が必要です。

だから、私はgetElementByName()新しい開発者も見るためのソリューションを追加しています。

NB。フォーム要素の名前は、投稿後にフォームを使用できるようにするために一意である必要がありますが、DOMでは、1つの名前を複数の要素で共有できます。そのため、可能であればフォームにIDを追加することを検討してください。または、フォーム要素名で明示的にしてmy_nth_select_named_xmy_nth_text_input_named_y

使用例getElementByName

var e = document.getElementByName("my_select_with_name_ddlViewBy");
var strUser = e.options[e.selectedIndex].value;

my_select_with_name_ddlViewByがmy_select_with_name_ddlViewBy []のような配列である場合は機能しません
zeuf

14

JavaScriptまたはjQueryを使用してこれを行うには、2つの方法があります。

JavaScript:

var getValue = document.getElementById('ddlViewBy').selectedOptions[0].value;

alert (getValue); // This will output the value selected.

または

var ddlViewBy = document.getElementById('ddlViewBy');

var value = ddlViewBy.options[ddlViewBy.selectedIndex].value;

var text = ddlViewBy.options[ddlViewBy.selectedIndex].text;

alert (value); // This will output the value selected

alert (text); // This will output the text of the value selected

jQuery:

$("#ddlViewBy:selected").text(); // Text of the selected value

$("#ddlViewBy").val(); // Outputs the value of the ID in 'ddlViewBy'

12

使うだけ

  • $('#SelectBoxId option:selected').text(); リストにあるテキストを取得するため

  • $('#SelectBoxId').val(); 選択されたインデックス値を取得するため


5
これは、OPの質問に答えないjQueryを使用します。
David Meza 2016年

9

以前の回答では、可能性、コードの直感性、およびidvs の使用のため、まだ改善の余地がありますname。選択したオプションの3つのデータ(インデックス番号、値、テキスト)を読み取ることができます。このシンプルなクロスブラウザコードは、3つすべてを実行します。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Demo GetSelectOptionData</title>
</head>
<body>
    <form name="demoForm">
        <select name="demoSelect" onchange="showData()">
            <option value="zilch">Select:</option>
            <option value="A">Option 1</option>
            <option value="B">Option 2</option>
            <option value="C">Option 3</option>
        </select>
    </form>

    <p id="firstP">&nbsp;</p>
    <p id="secondP">&nbsp;</p>
    <p id="thirdP">&nbsp;</p>

    <script>
    function showData() {
        var theSelect = demoForm.demoSelect;
        var firstP = document.getElementById('firstP');
        var secondP = document.getElementById('secondP');
        var thirdP = document.getElementById('thirdP');
        firstP.innerHTML = ('This option\'s index number is: ' + theSelect.selectedIndex + ' (Javascript index numbers start at 0)');
        secondP.innerHTML = ('Its value is: ' + theSelect[theSelect.selectedIndex].value);
        thirdP.innerHTML = ('Its text is: ' + theSelect[theSelect.selectedIndex].text);
    }
     </script>
</body>
</html>

ライブデモ:http : //jsbin.com/jiwena/1/edit?html,output

idメイクアップの目的で使用する必要があります。関数形式の目的でnameは、HTML5でも引き続き有効であり、引き続き使用する必要があります。最後に、特定の場所で角括弧と丸括弧の使用に注意してください。前に説明したように、すべての場所で丸いものを受け入れるのは(古いバージョンの)Internet Explorerだけです。




6

それがどのように機能するかの実行例:

var e = document.getElementById("ddlViewBy");
var val1 = e.options[e.selectedIndex].value;
var txt = e.options[e.selectedIndex].text;

document.write("<br />Selected option Value: "+ val1);
document.write("<br />Selected option Text: "+ txt);
<select id="ddlViewBy">
  <option value="1">test1</option>
  <option value="2">test2</option>
  <option value="3"  selected="selected">test3</option>
</select>

注:ドロップダウンが変更されても値は変更されません。その機能が必要な場合は、onClick変更を実装する必要があります。


使用後のコードの更新方法を示す良い回答です。
ユーザーではないユーザー

5

使用できますquerySelector

例えば

var myElement = document.getElementById('ddlViewBy');

var myValue = myElement.querySelector('[selected]').value;

5

私はこれを達成する方法について少し異なる見解を持っています。私は通常、次のアプローチでこれを行っています(これはより簡単な方法であり、私の知る限りすべてのブラウザーで機能します)。

<select onChange="functionToCall(this.value);" id="ddlViewBy">
  <option value="value1">Text one</option>
  <option value="value2">Text two</option>
  <option value="value3">Text three</option>
  <option value="valueN">Text N</option>
</select>


4

これまでの答えに合わせるために、これは私がワンライナーとしてそれを行う方法です。これは、選択したオプションの実際のテキストを取得するためのものです。すでにインデックス番号を取得する良い例があります。(そしてテキストのために、私はこのように見せたかっただけです)

let selText = document.getElementById('elementId').options[document.getElementById('elementId').selectedIndex].text

まれに、括弧を使用する必要がある場合がありますが、これは非常にまれです。

let selText = (document.getElementById('elementId')).options[(document.getElementById('elementId')).selectedIndex].text;

これが2行バージョンよりも速く処理されることはないと思います。私はコードをできるだけ統合したいだけです。

残念ながら、これはまだ要素を2回フェッチするため、理想的ではありません。要素を1回だけ取得する方法の方が便利ですが、1行のコードでこれを実行することに関しては、まだわかりません。


3

JavaScriptコード行は次のとおりです。

var x = document.form1.list.value;

listという名前のドロップダウンメニューがありname="list"、name属性を持つフォームに含まれていると仮定しますname="form1"


OPは彼らのために仕事しなかったことを言った:「私は、以下の方法を試してみましたが、それらはすべて、戻り値の代わりに選択されたインデックス:var as = document.form1.ddlViewBy.value;...」
ユーザーではありませんユーザー

2

querySelectorこれを達成するために使用する必要があります。これにより、フォーム要素から値を取得する方法も標準化されます。

var dropDownValue = document.querySelector('#ddlViewBy').value;

フィドル:https : //jsfiddle.net/3t80pubr/


1

私が質問を正しく答えていない人かどうかはわかりませんが、これは私にとってはうまくいきました:HTMLでのonchange()イベントの使用。

<select id="numberToSelect" onchange="selectNum">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
</select>

// javascript

function sele(){
    var strUser = numberToSelect.value;
}

これにより、クリックごとの選択ドロップダウンにある値が表示されます


1

これを行う最も簡単な方法は次のとおりです。

var value = document.getElementById("selectId").value;

彼は値ではなく、選択ボックスの表示されたテキストを望んでいます
Thanasis

0

onchange関数でこれを行う簡単な方法を次に示します。

event.target.options[event.target.selectedIndex].dataset.name


1
シンプルさの話を、私は考えていた。この代わりのevent.target
クリスチャンLæirbag

0

ただやる: document.getElementById('idselect').options.selectedIndex

次に、0から始まる選択インデックス値を取得します。


これは機能していません
Hujjat Nazari


-1

いくつかのオプションを備えたドロップダウンメニューを作成します(必要な数だけ!)

<select>
  <option value="giveItAName">Give it a name
  <option value="bananaShark">Ridiculous animal
  <ooption value="Unknown">Give more options!
</select>

ちょっと面白かったです。コードスニペットは次のとおりです。

<select>
  <option value="RidiculousObject">Banana Shark
  <option value="SuperDuperCoding">select tag and option tag!
  <option value="Unknown">Add more tags to add more options!
</select>
<h1>Only 1 option (Useless)</h1>
<select>
  <option value="Single">Single Option
</select>  

はい、スニペットは機能しました

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