Get selected value in dropdown list using JavaScript?
如何使用javascript从下拉列表中获取所选值?
我尝试了以下方法,但它们都返回选定的索引而不是值:
1 2 3 4 | 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元素:
1 2 3 4 5 | <select id="ddlViewBy"> <option value="1">test1</option> <option value="2" selected="selected">test2</option> <option value="3">test3</option> </select> |
运行此代码:
1 2 | var e = document.getElementById("ddlViewBy"); var strUser = e.options[e.selectedIndex].value; |
会使
1 2 | var e = document.getElementById("ddlViewBy"); var strUser = e.options[e.selectedIndex].text; |
这将使
纯JavaScript:
1 2 3 | var e = document.getElementById("elementId"); var value = e.options[e.selectedIndex].value; var text = e.options[e.selectedIndex].text; |
jQuery:
1 2 | $("#elementId :selected").text(); // The text content of the selected option $("#elementId :selected").val(); // The value of the selected option |
安格拉尔:(http://jsfiddle.net/qk5wwyct):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // 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 | var strUser = e.options[e.selectedIndex].value; |
这是正确的,应该给出值。你要的是文本吗?
1 | var strUser = e.options[e.selectedIndex].text; |
所以你对术语很清楚:
1 2 3 | <select> <option value="hello">Hello World</option> </select> |
此选项具有:
- 索引=0
- 价值=你好
- TEXT=你好世界
下面的代码展示了使用javascript从输入/选择字段获取/放置值的各种示例。
源链接
工作演示
1 2 3 4 5 6 7 8 9 10 | <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> TextBox1 <input type="text" id="srt" placeholder="get value on option select"> TextBox2 <input type="text" id="rtt" placeholder="Write Something !" onkeyup="up()"> |
以下脚本正在获取所选选项的值并将其放入文本框1中
1 2 3 | function run() { document.getElementById("srt").value = document.getElementById("Ultra").value; } |
以下脚本正在从文本框2中获取值并用其值发出警报
1 2 3 4 5 6 | function up() { //if (document.getElementById("srt").value !="") { var dop = document.getElementById("srt").value; //} alert(dop); } |
以下脚本正在从函数调用函数
1 2 3 4 5 6 7 8 | function up() { var dop = document.getElementById("srt").value; pop(dop); // Calling function pop } function pop(val) { alert(val); }? |
1 | var selectedValue = document.getElementById("ddlViewBy").value; |
如果您遇到纯粹为IE编写的代码,您可能会看到:
1 2 | var e = document.getElementById("ddlViewBy"); var strUser = e.options(e.selectedIndex).value; |
在firefox et al中运行上述命令会给您一个"is not a function"错误,因为ie允许您不必使用()而使用[]:
1 2 | var e = document.getElementById("ddlViewBy"); var strUser = e.options[e.selectedIndex].value; |
正确的方法是使用方括号。
1 2 3 4 5 6 | <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(); 。
初学者可能希望从具有name属性而不是id属性的select中访问值。我们知道所有表单元素都需要名称,甚至在它们获得ID之前。
所以,我要添加
铌。表单元素的名称必须是唯一的,这样表单在发布后才能使用,但DOM可以允许多个元素共享一个名称。出于这个原因,如果可以,可以考虑向表单添加ID,或者使用表单元素名称
使用
1 2 | var e = document.getElementByName("my_select_with_name_ddlViewBy"); var strUser = e.options[e.selectedIndex].value; |
由于代码的可能性、直观性以及使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <!DOCTYPE html> <html> <head> <meta charset="utf-8"> Demo GetSelectOptionData </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> 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); } </body> </html> |
现场演示:http://jsbin.com/jiwena/1/edit?HTML,输出。
使用jQuery:
1 | $(‘select’).val(); |
您可以使用
例如。
1 2 3 | var myElement = document.getElementById('ddlViewBy'); var myValue = myElement.querySelector('[selected]').value; |
有两种方法可以做到这一点:使用
JavaScript:
1 2 3 | var getValue = document.getElementById('ddlViewBy').selectedOptions[0].value; alert (getValue); // This will output the value selected. |
或
1 2 3 4 5 6 7 8 9 | 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:
1 2 3 | $("#ddlViewBy:selected").text(); // Text of the selected value $("#ddlViewBy").val(); // Outputs the value of the ID in 'ddlViewBy' |
如何工作的运行示例:
1 2 3 4 5 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); |
1 2 3 4 5 | <select id="ddlViewBy"> <option value="1">test1</option> <option value="2">test2</option> <option value="3" selected="selected">test3</option> </select> |
注意:下拉列表更改时,值不会更改,如果您需要该功能,则需要实现onclick更改。
按照上面的答案,这就是我如何做到的。这是为了获取所选选项的实际文本。已经有了很好的例子来获取索引号。(对于课文,我只想用这种方式展示)
1 | var selText = document.getElementById('elementId').options[document.getElementById('elementId').selectedIndex].text |
在一些罕见的情况下,您可能需要使用括号,但这将是非常罕见的。
1 | var selText = (document.getElementById('elementId')).options[(document.getElementById('elementId')).selectedIndex].text; |
我怀疑这个过程比二线版本快。我只想尽可能多地整合我的代码。
如果有人知道如何在一行中完成这项工作,而不必两次获取元素,那么我希望您能发表评论并向我展示这一点。我还没弄清楚…
另一个解决方案是:
1 | document.getElementById('elementId').selectedOptions[0].value |
在2015年,在火狐中,以下功能同样有效。
e.options.selectedIndex
下面是一个javascript代码行:
1 | var x = document.form1.list.value; |
假设名为list
我有点不同的看法,如何做到这一点。我通常使用以下方法来完成这项工作:(据我所知,这是一种更简单的方法,可以与所有浏览器一起使用。)
1 2 3 4 5 6 | <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> |
就这么做:
然后,我将从0开始获取select index值。
我能看到这段代码不起作用的唯一原因是,如果您使用的是IE7-,并且忘记为您的
您只需使用
1 | document.getElementById("idOfSelect").value; |
1 2 3 4 5 6 | 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; }); |
1 2 3 4 5 6 7 8 9 10 | <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> |
以下是在onchange函数中执行此操作的简单方法: