2017-08-16 3 views
0

ウェブページに乱数select multipleがあります。ユーザーが送信ボタンをクリックすると、select multipleの値がclassで取得されます。私も選択されたプラグインを使用しますが、私はそれが公開しようとしている問題に干渉するとは思わない。配列の配列のセレクタのJqueryグループの結果

<select multiple="multiple" id="idName0" class="idName chosenSelect"> 
    <option value="...">...</option>... 
</select> 
<select multiple="multiple" id="idName1" class="idName chosenSelect"> 
    <option value="...">...</option>... 
</select> 

、結果を得るために:ここに私のコードは次のようになります

results.push($(".idName").map(function(){return $(this).val();}).get()); 

のは、私が(value fooとbarで)最初selectで選択された2 option年代を持っていると言ってみましょう2つ目は1つ(value foobar)です。ギブでselect multipleを指すセレクタに)

[[foo,bar],[foobar]] 

私が知っているから、あなたは.val(呼び出すとき:私が欲しいもの

[foo,bar,foobar] 

です:これはすべてのように見えるarrayは私を与えます異なる配列のoptionが選択されています。そして、ここでは、複数のselect multipleがありましたが、私はそれらの配列の配列を作成したいと考えていました。

助けを歓迎します。

答えて

1

これにはmap()を使用できますが、各selectの値を配列にラップする必要があります。あなたは、空の配列でnull年代をしたくない場合は、map関数の戻り値に[]を追加することにより.get()

$('select').change(function() { 
 
    var data = $("select").map(function() { 
 
    return [$(this).val()] 
 
    }).get() 
 

 
    console.log(data) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select multiple="multiple" id="idName0" class="idName chosenSelect"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select> 
 
<select multiple="multiple" id="idName1" class="idName chosenSelect"> 
 
    <option value="4">4</option> 
 
</select>

+0

.filter(Boolean)を追加することができます選択し、すべては私が望んでいたように動作します($( "。idName"))。get();)。ありがとうございます。 –