读取select = multiple不起作用

时间:2014-09-10 04:23:57

标签: javascript

我有一个多选选项,如下所示;

<select name="cars" id="carsId" multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>
<input type="submit" onclick="readValues()">

我需要将所有值读入readValues函数的数组中。阵列购物就好像

A = [Volvo,Saab,opel,audi]

请帮帮我们!!

6 个答案:

答案 0 :(得分:3)

http://www.w3schools.com/jsref/coll_select_options.asp

var x = document.getElementById("mySelect");
var options = [];
for (var i = 0; i < x.length; i++)
  {
     options.push(x.options[i].value);// or .text for the text
  }

使用jquery: How to get all options of a select using jQuery?

 var options = [];
$("#id option").each(function()
{
    options.push($(this).val());
});

答案 1 :(得分:3)

你也可以试试这个:

var readValues = function () {
    var options = document.getElementById('carsId').options;
    var list = [],
        i = options.length;
    while (i--) {
        list.push(options[i].value);
    }
    console.log(list);//<-- ["audi", "opel", "saab", "volvo"] 
};

如果您需要向用户显示文字,请使用list.push(options[i].innerHTML);

答案 2 :(得分:2)

你可以试试这个:

如果你正在使用jQuery,你可以试试

jQuery解决方案

function readValuesJQuery(){
    var A = $("select option").map(function(){
        return this.value;
    }).get();
    console.log(A);
}

javascript解决方案

function readValuesJavascript(){
   var ddlArray= new Array();
   var ddl = document.getElementsByTagName('select')[0];
   for (i = 0; i < ddl.options.length; i++) {
      ddlArray[i] = ddl .options[i].value;
   }
   console.log(ddlArray);
}

Demo

答案 3 :(得分:1)

使用jQuery:

function readValues() {
    var values = [];
    $('[name="cars"] option').each(function() {
        values.push($(this).val());
    });
    return values;
}

使用纯javascript:

var readValues = function () {
    var options = document.getElementById('carsId').children;
    var values = [];
    for(i = 0; i < options.length; ++i) {
        values.push(options[i].value);
    }
    console.log(values);
    return values;
}

演示:http://jsfiddle.net/q94ndrcc/

答案 4 :(得分:1)

click here

$("#sel").click(function(e) { // when link clicked
    e.preventDefault();
    $("#foo option:selected ").each(function() {
        var v = $(this).attr("value"); // first select's value
        $('#bar option').each(function() {
            if ($(this).attr("value") == v) { 
                $(this).attr("selected",true); // select if same value
            }
        });
    });
})

答案 5 :(得分:1)

尝试按照其工作方式。

HTML

<select name="cars" id="carsId" multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>
<input type="button" id="btnClick" value="getValue">

脚本:jQuery 1.9.1

//1. for selected value:
$(document).ready(function(){
      $('#btnClick').click(function(){
         var selText = [];
         $("#carsId option:selected").each(function () {
           var $this = $(this);
           if ($this.length) {
            selText.push($this.text());
           }
        });
          alert(selText);
    });
});

//2. get all value without any selection:

 $(document).ready(function(){
      $('#btnClick').click(function(){
         var selText = [];
         $("#carsId option").each(function () {
           var $this = $(this);
           if ($this.length) {
            selText.push($this.text());
           }
        });
          alert(selText);
      });
  });

<强> Running Demo