我有这个功能,当我选中一个或多个复选框时,该函数会加载已选中复选框的值...但是当我取消选中一个或多个复选框时,该函数会显示一个空数组。
这是功能:
$(document).ready(function () {
$('input[type="checkbox"]').change(function () {
var mycheck = new Array();
if ($(this).is(':checked')) {
$("#line-checkbox-1:checked").each(function () {
mycheck.push($(this).val());//aggiungo value del checked
});
alert(mycheck)
} else {
var itemtoRemove = $(this);
mycheck.splice($.inArray(itemtoRemove, mycheck), 1); //rimuovo il value del dechecked
alert(mycheck);
}
});
这是复选框的HTML:
<div class="col-lg-3">
<input tabindex="17" id="line-checkbox-1" type="checkbox" name="servizi" value="3">
</div>
答案 0 :(得分:0)
试试这个简单的脚本,这适合你:
<强> HTML 强>
<input type="checkbox" name="options[]" value="1" />
<input type="checkbox" name="options[]" value="2" />
<input type="checkbox" name="options[]" value="3" />
<input type="checkbox" name="options[]" value="4" />
<input type="checkbox" name="options[]" value="5" />
<强> JQUERY 强>
$(document).ready(function ()
{
$('input[type="checkbox"]').change(function ()
{
var arr = $.map($('input:checkbox:checked'), function(e,i) {
return +e.value;
});
alert(arr);
});
});
答案 1 :(得分:0)
这可能是因为您使用id来引用复选框,因为每次用户更改复选框时都会从头开始创建数组。每次更改复选框时都应该重新检查列表。这意味着你不需要if。(if($(this).is(“:checked”))
$('.checkboxes input[type="checkbox"]').change(function () {
var mycheck = new Array();
$(".checkboxes input[type='checkbox']:checked").each(function () {
if ($(this).is(':checked')) {
mycheck.push($(this).attr("id") + ": is " + $(this).val()); //aggiungo value del checked
}
});
alert(mycheck);
});
如果我理解你正在尝试做什么,这是一个fiddle