繁体   English   中英

多个 select get Selected options in order to selected

[英]Multiple select get Selected options in order selected

我有多个 select 如下

<select name="cars" id="cars" multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

我已经实现了选择的插件,我有一个 onchange 侦听器,可以像这样将选定的元素添加到数组中

$("#cars").change(function () {
 
    var selected = [];
    for (var option of document.getElementById('cars').options) {
        if (option.selected) {
            selected.push(option.value);
        }
    }
    console.log(selected);


 
});

但是,在哪个选项中,我 select 项目最终总是按照它们在多个 select 中的顺序排列,例如通过选择沃尔沃、奥迪、萨博的值以该顺序产生以下数组

Array [ "Volvo" ]
Array [ "Volvo", "Audi" ]
Array(3) [ "Volvo", "Saab", "Audi" ]

有没有一种方法可以按选择的顺序将多个 select 中的元素添加到数组中?

因为每次运行onChange function 时都会创建selected数组的顺序,因此您始终会获得相同的顺序。 所以解决方案是让它成为一个全局变量。 当你这样做时,你的数组在第二个选择时不会是空的,所以你必须注意从中删除项目。 这是一些代码

 var selected = []; $("#cars").change(function () { for (var option of document.getElementById('cars').options) { var value = option.value; if (option.selected) { if(selected.indexOf(value) < 0){//we only add element if it's not present in the array selected.push(value); } }else{ if(selected.indexOf(value) >= 0){ //we only remove item if it is present selected.splice(selected.indexOf(value),1) } } } console.log(selected); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select name="cars" id="cars" multiple> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="opel">Opel</option> <option value="audi">Audi</option> </select>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM