我有一个同名的复选框,我需要在数组中获取复选框的选定值。(它应该排除非选定的值)。我有以下代码。
$(document).ready(function() {
$(".t").change(function() {
var allVals = [];
$("input[name='checkbox1']:checked").each(function() {
// alert($(this).val());
allVals.push($(this).val());
});
$('#click').click(function() {
$.each(allVals, function() {
alert(this); // It alerts old past value also
});
});
});
});
<input name="checkbox1" class="t" type="checkbox" value="1"/>a <br/>
<input name="checkbox1" class="t" type="checkbox" value="2"/>b <br/>
<input name="checkbox1" class="t" type="checkbox" value="3"/>c <br/>
<input name="checkbox1" class="t" type="checkbox" value="4"/>d <br/>
<input id="click" id="button" type="button" value="click" />
这是一个带有我的代码的JSFiddle - &gt; http://jsfiddle.net/manseuk/VHSrZ/
有人可以建议如何解决吗?
答案 0 :(得分:2)
你可以这样做:
$(document).ready(function() {
var allVals;
$(".t").change(function() {
allVals = [];
$("input[name='checkbox1']:checked").each(
function() {
allVals.push($(this).val());
});
});
});
这样,allVals是一个只包含已检查值的数组
在此处http://jsfiddle.net/K6dTF/(使用firebug检查结果)
答案 1 :(得分:1)
每次单击复选框时,都会绑定新的单击功能。你需要把它放在这个范围之外,或者取消绑定函数并重新绑定。
类似的东西:
$(document).ready(function() {
var allVals = [];
$(".t").change(function() {
allVals = [];
$("input[name='checkbox1']:checked").each(function() {
// alert($(this).val());
allVals.push($(this).val());
});
});
$('#click').click(function() {
$.each(allVals, function() {
alert(this); // It alerts old past value also
});
});
});
请参阅小提琴:http://jsfiddle.net/VHSrZ/3/
答案 2 :(得分:1)
将您的JS更改为以下内容:
它将警告一系列选定值
$('#click').click(function() {
var allVals = [];
$("input[name='checkbox1']:checked").each(function() {
// alert($(this).val());
allVals.push($(this).val());
});
alert(allVals);
});