JavaScriptを使用してドロップダウンリストから選択した値を取得する方法
私は以下のメソッドを試しましたが、それらはすべて値の代わりに選択されたインデックスを返します:
var as = document.form1.ddlViewBy.value;
var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].value;
var value = document.getElementById("ddlViewBy").value;
このような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
にするでしょう
普通の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").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'
}];
var strUser = e.options[e.selectedIndex].value;
これは正しいので、あなたに価値を与えるべきです。
var strUser = e.options[e.selectedIndex].text;
それで、あなたは専門用語で明白です:
<select>
<option value="hello">Hello World</option>
</select>
このオプションは以下のとおりです。
次のコードは、JavaScriptを使用して入力/選択フィールドから値を取得/配置することに関するさまざまな例を示しています。
Working デモ
<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>
var selectedValue = document.getElementById("ddlViewBy").value;
純粋にIEのために書かれたコードに出くわすなら、これを見るかもしれません:
var e = document.getElementById("ddlViewBy");
var strUser = e.options(e.selectedIndex).value;
Firefoxなどで上記を実行すると、IEで[]ではなくusing()を使用できなくなるため、「関数ではありません」というエラーが発生します。
var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].value;
正しい方法は角括弧を使うことです。
<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>
ただ使う
リストされているテキストを取得するための$('#SelectBoxId option:selected').text();
選択されたインデックス値を取得するための$('#SelectBoxId').val();
初心者は、ID属性ではなくNAME属性を持つ選択からの値にアクセスしたいと思うでしょう。すべてのフォーム要素は、IDを取得する前でも名前が必要です。
だから、私はgetElementByName()
ソリューションを新しい開発者にも見せるためだけに追加しています。
NB。フォーム要素の名前は、一度送信されたフォームを使用できるようにするために一意である必要がありますが、DOMでは名前を複数の要素で共有することができます。そのため、可能であればIDをフォームに追加するか、フォーム要素名my_nth_select_named_x
およびmy_nth_text_input_named_y
で明示的にすることを検討してください。
getElementByName
を使用した例:
var e = document.getElementByName("my_select_with_name_ddlViewBy");
var strUser = e.options[e.selectedIndex].value;
可能性、直感的なコード、およびid
と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"> </p>
<p id="secondP"> </p>
<p id="thirdP"> </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でも有効であり、まだ使用されるべきです。最後に、特定の場所では角括弧と丸括弧の使用に注意してください。前に説明したように、([古いバージョンの)IEのみがすべての場所で丸いものを受け入れます。
記事JavaScriptまたはjQueryを使用したドロップダウン要素の選択を参照してください。彼らはJavaScriptとjQueryを使ってさまざまな方法でそれを説明しました。
JQueryを使う:
$(‘select’).val();
querySelector
を使うことができます。
例
var myElement = document.getElementById('ddlViewBy');
var myValue = myElement.querySelector('[selected]').value;
仕組みの実行例:
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の変更を実装してください。
これを行うには、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'
上記の答えと一緒に行くために、これは私がワンライナーとしてそれをする方法です。これは選択されたオプションの実際のテキストを取得するためのものです。インデックス番号を取得するための良い例があります。 (そして、テキストについては、私はちょうどこのように見せたかったです)
var selText = document.getElementById('elementId').options[document.getElementById('elementId').selectedIndex].text
まれに括弧を使用する必要がある場合もありますが、これは非常にまれです。
var selText = (document.getElementById('elementId')).options[(document.getElementById('elementId')).selectedIndex].text;
私はこのプロセスが2行バージョンよりも速いとは思わない。私は自分のコードを可能な限り統合したいだけです。
要素を2回取得しなくても1行でこれを実行する方法を誰かが知っている場合、私はあなたがコメントしてどのように私に見せるのが大好きです。私はまだそれを理解することができていません...
2015年、 Firefox では、以下も動作します。
e. options 。selectedIndex
別の解決策は:
document.getElementById('elementId').selectedOptions[0].value
これがJavaScriptコード行です。
var x = document.form1.list.value;
ドロップダウンメニューがlist name="list"
という名前で、name属性がname="form1"
のフォームに含まれているとします。
document.getElementById('idselect').options.selectedIndex
だけ
それからあなたは私が0から始めて、選択インデックス値を取得します。
このコードが機能しない理由は、IE7-を使用していて、<option>
タグのvalue属性を指定し忘れている場合だけです。他のすべてのブラウザでは、オプションとして開閉タグ内のものを変換する必要があります値。
Selectの選択されたオプションの値を取得するためにselectElement.value
を使うことができます。
document.getElementById("idOfSelect").value;
var res = document.querySelector('p');
var select = document.querySelector('select');
res.textContent = "Selected Value: "+select.value;
select.addEventListener("change", function(e){
res.textContent = "Selected Value: "+select.value;
});
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
Change value of the select to show the value.
<p>
</p>
私は少し違った見方をしています、これを達成する方法。私はたいてい次のようなやり方でこれをやっています:(私の知る限りではもっと簡単な方法で全てのブラウザで動作します)
<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>