获取输入检查值,就像它是一个表单

时间:2014-07-03 06:19:55

标签: javascript jquery

假设我有一组输入:

 <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

想法?

3 个答案:

答案 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