从jQuery中的复选框的数组值中删除

时间:2016-03-31 06:13:02

标签: javascript jquery arrays checkbox

我有一个像这样的复选框:

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,但它不起作用。真的很感激这方面的帮助。

1 个答案:

答案 0 :(得分:4)

您编写的代码似乎为简单的工作采用了非常复杂的路径。您可以看到以下内容,以获取有关如何将所有值都添加到checkedunchecked状态的数组中的良好示例。

在演示中,如果用户更改任何复选框的状态,我会通过已选中和未选中的复选框进行枚举,并将选中的值存储在名为cbChecked的数组中,未经检查的值将存储在{{1}中}

这里的关键是使用的选择器:

选择器用法

全部检查&#39;对象

cbUnchecked

全部取消选中&#39;对象

:checked

示范

&#13;
&#13;
: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;
&#13;
&#13;