>我的网页上有随机数量的select multiple
,当用户单击发送按钮时,我通过其class
检索这些select multiple
的值。我也使用所选的插件,但我认为它不会干扰我将要暴露的问题。这是我的代码的样子:
<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());
假设我在第一个select
(带有value
foo 和 bar(中选择了 2 个option
,在第二个(带有value
foobar(中选择了 1 个。所有这些都给了我一个看起来像array
:
[foo,bar,foobar]
我想要的是:
[[foo,bar],[foobar]]
据我所知,当你在指向select multiple
的选择器上调用 .val(( 时,会给你一个带有不同选定option
的数组。在这里,由于有多个select multiple
在争夺中,我希望创建这些数组的数组。
欢迎任何帮助。
您可以使用map()
,但您还需要将每个select
的值包装在数组中。如果您不希望数组中的null
用于空选择,您可以在.get()
后添加.filter(Boolean)
$('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>