2016-03-31 68 views
4

我有一個複選框是這樣的:從複選框數組的值刪除jQuery中

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,但它不工作。真的很感激這方面的幫助。

回答

3

看來你寫的代碼對於一個簡單的工作來說是一條非常複雜的路線。您可以看到以下示例,瞭解如何將checkedunchecked狀態的所有值都獲取到自己的陣列中。

在演示中,我通過檢查,未選中的複選框枚舉如果用戶更改任何複選框的狀態,檢查值存儲在一個名爲cbChecked的陣列和未選中值存儲在cbUnchecked

的關鍵這裏使用的選擇:

選擇使用

獲取所有 '檢查' 對象

:checked 

獲取所有未選中對象

:not(:checked) 

示範

$(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()); 
 
    
 
    }); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<h2> The checkbox form</h2> 
 
<form id="foo"> 
 
    <p>A : <input type="checkbox" id="a" value="a"></p> 
 
    <p>B : <input type="checkbox" id="b" value="b"></p> 
 
    <p>C : <input type="checkbox" id="c" value="c"></p> 
 
    <p>D : <input type="checkbox" id="d" value="d"></p> 
 
    <p>E : <input type="checkbox" id="e" value="e"></p> 
 
    <p>F : <input type="checkbox" id="f" value="f"></p> 
 
</form> 
 

 
<h2>Checked Values</h2> 
 
<p id="cbChecked"></p> 
 

 
<h2>Unchecked Values</h2> 
 
<p id="cbUnchecked"></p>

+0

你做了一個很好的工作。 :) – Ognj3n

+0

很高興這有助於:) –