题 使用JavaScript在下拉列表中获取选定的值?


如何使用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;

1374
2017-07-06 07:25


起源




答案:


如果你有一个如下所示的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


2336
2017-07-06 07:29



@ R11G,使用 onchange :) - AlexJaa
var strUser = e.options[e.selectedIndex].value; 为什么不呢 var strUser = e.value ? - The Red Pea
@ TheRedPea - 也许是因为当写这个答案时,有一个机会(无论多么遥远)需要容纳古老版本的Netscape Navigator,因此使用了同样古老的方法来访问单个选择的值。但我只是在猜测。 ;-) - RobG
它如何适用于多个选择? - Rishi Dua
我用过这样的: var e = document.getElementById("ddlViewBy").value; - Fathur Rohim


普通的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'
}];

281
2017-12-18 02:08



我必须做错事,因为当我尝试这个时,我会在下拉列表中找回每个选项的文本。 - Kevin
这确实以不同的方式对我有用。 $(“#ddlViewBy:selected”)。val()没有选中 - Ruwantha
element.options[e.selectedIndex].value 一定是 element.options[element.selectedIndex].value - Christopher
仍然有用 - 谢谢你写出变化/语言!现在,如果我只知道Office JS API Dropdown的等价物...... - Cindy Meister


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

这是正确的,应该给你价值。 这是你要追求的文字吗?

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

所以你对术语很清楚:

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

此选项包括:

  • 指数= 0
  • 值=你好
  • Text = Hello World

156
2017-07-06 07:29



我认为javascript中的“.value”应该为我返回值,但只有“。text”会返回,因为asp.net中的.SelectedValue返回。谢谢你举个例子! - Fire Hand
是的 - 使选项的值与它的值相同。更简单 - 上面的人需要编写更多代码来弥补他最初的模糊性。 - Andrew Koper


以下代码展示了与使用JavaScript从输入/选择字段获取/放置值相关的各种示例。

加工 DEMO

 <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>

47
2017-12-03 06:50





var selectedValue = document.getElementById("ddlViewBy").value;

21
2017-10-25 13:27





如果您遇到纯粹为IE编写的代码,您可能会看到:

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

在Firefox等运行上面的内容会给你一个'不是函数'的错误,因为IE允许你使用()而不是[]来逃避:

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

正确的方法是使用方括号。


18
2018-06-18 15:28





<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>

12
2018-04-14 13:45