我正在尝试从多个选择下拉框中将值推送到数组中。我能够做到这一点但发生的事情是它们没有按照我通过splice设置的顺序被推入阵列。它按照在选择框中设置的顺序添加。例如,如果我按[467,341,344,657,677]的顺序选择选项,我的数组显示[344,467,677,341,657]。我希望数组按顺序显示我选择了选项。 这是我的代码:
<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);
});
请帮忙!
答案 0 :(得分:1)
如果你只想要select
中的值,忽略顺序,你可以使用:
$(".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);
})
option
并获取值select
optVal
,请按optVal
optVal
内,则从optVal 这将使它们按照选择的顺序保留。
CodePen:http://codepen.io/theblindprophet/pen/RRrJXG?editors=1010
答案 1 :(得分:0)
试试这段代码:
var optVal = new Array();
$('option').click(function() {
optVal.push($(this).val());
});