我有一个像这样的复选框:
while($userRow=$resultForUsers->fetch_assoc()){
$nameOfUser=$userRow['users_name'];
$userId=$userRow['user_facebook_id'];
$userFBPicture=$userRow['users_picture'];
echo "
<tr class='tr-data-users'>
<td class='text-center'>
<input type='checkbox' class='checkbox' onclick='if(this.checked){selo(this.value)}else{izbaci(this.value)}' value=$userId>
</td>
因此,对于我的数据库中的每个用户,我都有一个带有其id值的复选框。我需要一个数组中所有已检查用户(即复选框)的ID。我是这样做的:
<input type='checkbox' class='checkbox' onclick='if(this.checked){put(this.value)}else{remove(this.value)}' value=$userId>
var niz={};
var index=0;
function put(o){
niz[index++]=o;
console.log(niz);
}
因此,console.log
现在显示所有已选中复选框的ID。我想要做的是,如果取消选中复选框,则从数组中删除该ID(即chechbox值)。我试过这样的话:
onclick='if(this.checked){put(this.value)}else{remove(this.value)}'
var niz={};
var index=0;
function put(o){
niz[index++]=o;
console.log(niz);
remove(o,niz);
}
function remove(o,niz){
if($.inArray(o,niz)){
console.log('radim');
var indexNiza= $.inArray(o,niz);
niz= $.grep(niz,function(a,o){
return (a!=o);
});
}
}
正如您所看到的那样else
部分应该处理,如果取消选中复选框并从数组中删除该ID,但它不起作用。真的很感激这方面的帮助。
答案 0 :(得分:4)
您编写的代码似乎为简单的工作采用了非常复杂的路径。您可以看到以下内容,以获取有关如何将所有值都添加到checked
和unchecked
状态的数组中的良好示例。
在演示中,如果用户更改任何复选框的状态,我会通过已选中和未选中的复选框进行枚举,并将选中的值存储在名为cbChecked
的数组中,未经检查的值将存储在{{1}中}
这里的关键是使用的选择器:
全部检查&#39;对象
cbUnchecked
全部取消选中&#39;对象
:checked
:not(:checked)
&#13;
$(document).ready(function() {
$("input[type='checkbox']").change(function() {
var cbChecked = new Array();
var cbUnchecked = new Array();
$("input[type='checkbox']:checked").each(function() {
cbChecked[cbChecked.length] = this.value;
});
$("input[type='checkbox']:not(:checked)").each(function() {
cbUnchecked[cbUnchecked.length] = this.value;
});
$("p#cbChecked").html( cbChecked.join() );
$("p#cbUnchecked").html( cbUnchecked.join() );
});
});
&#13;