2016-09-29 61 views
0

我有复选框列表,我需要获取一个选中项目的数组。我使用下面的函数,但它也返回一些字符值。Jquery复选框返回一些值

var rIds = $('input[type=checkbox]:checked').map(function (_, el) { 
    return $(el).val(); 
}).get(); 

输出是:

["1", "414", "true", "true"] 

不过,我希望下面的输出,

["1", "414"] 

这是为什么?

+3

你的功能是正确的。如果你选择的复选框比你期望的多,那么你需要使你的输入[type = checkbox]:checked'' selector更具体 –

+0

@RoryMcCrossan你击败了我10秒。另外@ TechGuy,你应该使用类似'containerSelector input [type = checkbox]:checked' – Rajesh

+0

使用'rIds.slice(0,2)' – madalinivascu

回答

0

号()将只返回号码,如果是数字,否则0 ,Infinity , NaN将返回

var rIds = $('input[type=checkbox]:checked').map(function (_, el) { 
    var current = $(el).val(); 
    if (Number(current) == current) return current ; 
}).get(); 
0

正如@Rory Mccrossan建议,您的选择将获取所有复选框。您应该更新您的选择器以获取适当的元素。

下面是一个显示这两种情况下的基本实现:

$("#btnTest").on("click", function() { 
 
    var allChks = $('input[type=checkbox]:checked').map((i, v) => v.value).get(); 
 
    var div2Chks = $(".container2 input[type=checkbox]:checked").map((i, v) => v.value).get(); 
 
    console.log(allChks, div2Chks) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<div class="container1"> 
 
    <input type="checkbox" value="true" checked>Test 
 
    <input type="checkbox" value="true" checked>Test 
 
</div> 
 

 
<div class="container2"> 
 
    <input type="checkbox" value="foo" checked>Foo 
 
    <input type="checkbox" value="bar" checked>Bar 
 
</div> 
 

 
<button id="btnTest">Get Value</button>