Javascript 如何将多选下拉列表中的值推送到数组中?
我试图从多选下拉框将值推送到数组中。我可以做到这一点,但实际情况是,它们没有按我设置的顺序通过拼接推入阵列。它是按照在选择框中设置的顺序添加的。例如,如果我按[467,341,344,657,677]的顺序选择选项,我的数组将显示[344,467,677,341,657]。我希望数组按我选择选项的顺序显示。 这是我的代码:Javascript 如何将多选下拉列表中的值推送到数组中?,javascript,jquery,html,arrays,drop-down-menu,Javascript,Jquery,Html,Arrays,Drop Down Menu,我试图从多选下拉框将值推送到数组中。我可以做到这一点,但实际情况是,它们没有按我设置的顺序通过拼接推入阵列。它是按照在选择框中设置的顺序添加的。例如,如果我按[467,341,344,657,677]的顺序选择选项,我的数组将显示[344,467,677,341,657]。我希望数组按我选择选项的顺序显示。 这是我的代码: <select multiple class="yo"> <option value = "344">opt1</option>
<select multiple class="yo">
<option value = "344">opt1</option>
<option value = "467">opt2</option>
<option value = "677">opt3</option>
<option value = "341">opt1</option>
<option value = "657">opt1</option>
</select>
var optVal = new Array();
var tArray;
$('.yo').each(function() {
var newS = $(this).val();
tArray = newS;
optVal.splice(0, 0, tArray);
});
opt1
opt2
opt3
opt1
opt1
var optVal=新数组();
跗关节;
$('.yo')。每个(函数(){
var newS=$(this.val();
tArray=新闻;
光学拼接(0,0,tArray);
});
请帮忙
这是我的小提琴:试试下面的代码:
var optVal = new Array();
$('option').click(function() {
optVal.push($(this).val());
});
如果只需要
选择中的值,不考虑顺序,可以使用:
$(".yo").val()
但是,您希望他们订购,这是非常棘手的:
var optVal = [];
var tempVal = [];
$(".yo").change(function() {
$(".yo option").each(function() {
var val = $(this).val();
var tempVal = $(".yo").val();
if(tempVal.indexOf(val) >= 0 && optVal.indexOf(val) < 0) {
optVal.push(val);
} else if(tempVal.indexOf(val) < 0 && optVal.indexOf(val) >= 0) {
optVal.splice(optVal.indexOf(val) , 1);
}
})
console.log("Opt: " + optVal);
})
var optVal=[];
var tempVal=[];
$(“.yo”).change(函数(){
$(“.yo选项”)。每个(函数(){
var val=$(this.val();
var tempVal=$(“.yo”).val();
if(tempVal.indexOf(val)>=0&&optVal.indexOf(val)<0){
光学推送(val);
}else如果(临时索引(val)<0&&optVal.indexOf(val)>=0){
光刻接头(光刻指数),1;
}
})
控制台日志(“Opt:+optVal”);
})
- 当值发生更改时,触发
- 迭代每个
选项
并获取值
- 从
select
- 如果选择了选项且不在
optVal
中,则按下optVal
- 如果未选择选项且在
optVal
内,则从optVal中删除
这将使它们保持选定顺序
代码笔:为什么不直接使用.push()
?似乎您正在使用事件处理程序,请在代码中向我们展示,并提供一个可运行的示例。我无法用你的代码得到这些结果。我添加了一个小提琴!首先,您并不是真的将任何内容“推”到数组中,只是保留一个值。此外,multi-select不会跟踪您选择项目的顺序,它会在两次单击之间选择所有项目,并以自上而下的方式进行选择。我没有使用push,希望总是在数组的开头添加值,即在索引0处。。。Push做了与我上面的代码相同的事情我已经试过了。我没有得到任何结果。非常感谢。though@rashmeePrakash嗯,我想知道为什么它不起作用。这是一个动态版本的小玩意儿不用担心,有时可能会失败的一件事是使用jquery的.click()函数形式与.on(“click”,function(){})形式。.on方法更通用,可以在添加事件后绑定。太棒了!这管用!不过我有个问题。。。如果我希望下一步选择的每个元素都转到索引0,该怎么办。所以每次我选择一个选项时,我希望该值位于索引0optVal.unshift(val)代码>