假设我有一组输入:
<input type=checkbox value=1 checked/>
<input type=checkbox value=2 checked/>
<input type=checkbox value=3 checked/>
<input type=checkbox value=4 checked/>
$("input[type=checkbox]").is(":checked").val();
不起作用,即使$("input[type=checkbox]").val();
也只返回第一个。我知道我可以使用$.each()
,但我可能正在寻找一种更有效的方法。我希望它返回就像正常返回的表单类型值一样,如下所示:1,2,3,4
想法?
答案 0 :(得分:2)
尝试使用.map()
和.get()
来收集数组中已选中的复选框值,
var values = $(':checkbox:checked').map(function(){
return this.value;
}).get(); // 1,2,3,4 But the values would be in an array
如果您希望将这些值作为连接字符串,请执行
var result = values.join(); //"1,2,3,4"
答案 1 :(得分:0)
您可以使用.map()。
描述:通过函数传递当前匹配集中的每个元素,生成一个包含返回值的新jQuery对象。
由于返回值是一个包含数组的jQuery对象,因此在结果上调用.get()以使用基本数组非常常见。
使用
var arr = $(':checkbox:checked').map(function () {
return this.value; // $(this).val()
}).get(); //Result in array
var values = arr.join(); in string
答案 2 :(得分:0)
好吧,我对jQuery并不友好,所以我没有Jquery解决方案(快速读取no-jQuery)。我的解决方案稍长,但速度非常快。在jsperf中,对手的解决方案快了29倍。 http://jsperf.com/map-vs-cycle 这是jQuery map方法的开销成本。
这是代码:
var chckbxs = document.querySelectorAll("input[type=checkbox]"), // NodeList with these checkboxes
num = chckbxs.length,
values = [], i
for(i = 0; i < num; i++) // save values into array
values[i] = chckbxs[i].value;
values = values.toString() // to string data