2016-07-21 47 views
1

我想從多選下拉框中將值壓入數組中。我能夠做到這一點,但是會發生什麼,他們不會按照我通過拼接設置的順序將其壓入陣列中。它按照它在選擇框上設置的順序添加。例如,如果我按照[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); 

     }); 

請幫忙!

這裏是我的小提琴:https://jsfiddle.net/rprakash/e1xcd2gh/

+0

爲什麼不使用'.push()'?看起來您正在使用事件處理程序,請在代碼中顯示我們並提供可運行的示例。我無法使用您的代碼獲得這些結果。 –

+0

我添加了一個小提琴! – rashmeePrakash

+0

首先,你並不是真的「推」任何東西到數組中,只保留一個值。此外,多重選擇劑量不會跟蹤您選擇項目的順序,它會在兩次點擊之間選擇所有項目,並以自上而下的方式進行。 –

回答

1

如果你只是想在select內的值,無視命令,你可以使用:

$(".yo").val() 

然而,你想要他們的訂單,這是非常tricker:

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並獲得價值
  • 如果選項被選中,而不是在optVal然後推入optVal
  • 獲取從 select
  • 所有選擇值
  • 如果未選擇該選項並在optVal內部,則從optVal中移除

這將使它們保持它們被選擇的順序。

CodePen:http://codepen.io/theblindprophet/pen/RRrJXG?editors=1010

+0

太棒了!這工作!我有一個問題,但是...如果我想要我選擇的每個元素接下來我希望它到索引0.因此,每次我選擇一個選項,我想要索引0的值 – rashmeePrakash

+0

'optVal.unshift(val);' – theblindprophet

+0

謝謝!!!這工作! – rashmeePrakash

0

試試這個代碼:

var optVal = new Array(); 

$('option').click(function() { 
    optVal.push($(this).val()); 
}); 
+0

我試過這個。我沒有得到任何結果。謝謝 – rashmeePrakash

+0

@rashmeePrakash嗯,我想知道爲什麼它沒有工作。這是一個小提琴與實時版本https://jsfiddle.net/h98sLubr/ – Hopeless

+0

對不起!你是對的!這也適用! – rashmeePrakash

相關問題