2016-04-14 33 views
1

我想這將處理以下情況下一個jQuery條件的所有條件下運行復選框 -如何在jQuery的

1)一些選擇

2複選框)的所有複選框的選擇

我希望他們都在一個單一的循環。目前,我有以下代碼選擇所有複選框只 -

$('.check-all').click(function() { 
    var selector = $(this).is(':checked') ? ':not(:checked)' : ':checked'; 
    var ids = []; 

    $('#chkall input[type="checkbox"]' + selector).each(function() { 
     $(this).trigger('click'); 
     ids.push($(this).attr('value')); 
    }); 
    var id = []; 
    id = JSON.stringify(ids); 
    document.cookie = "ids="+id; 
}); 

而且考慮複選框在我的PHP代碼 -

echo '<ul class="list-unstyled" id="chkall">'; 
foreach ($contacts as $contact) { 
    echo '<li> 
    <div class="checkbox" id="checkboxes"> 
     <label><input type="checkbox" class="case" name="case" value="'.$contact['cust_id'].'" id="'.$contact['cust_id'].'">'.$contact['cust_fname'].' '.$contact['cust_lname'].'</label> 
    </div> 
</li>'; 
} 

那麼,應該怎麼處理在這兩種情況一個單一的循環?檢查完成後,我發送了一個cookie。

+0

你介意分享一下嗎?我們沒有'$聯繫人'與我們.. – Rayon

+0

你使用angularjs或不?如果沒有,請不要放標籤。 – Walfrat

+0

對不起,我剛剛從標籤中刪除它 –

回答

0

我找到了解決辦法&現在這樣在接下來的方式 -

PHP代碼 -

echo '<ul class="list-unstyled" id="chkall">'; 
foreach ($contacts as $contact) { 
    echo '<li> 
    <div class="checkbox" id="checkboxes" onclick="getID('.$contact['cust_id'].')"> 
     <label><input type="checkbox" class="check-all" name="case" value="'.$contact['cust_id'].'" id="'.$contact['cust_id'].'">'.$contact['cust_fname'].' '.$contact['cust_lname'].'</label> 
    </div> 
</li>'; 
} 

<div class="checkbox" onclick="getID('0')"> 
    <?= Html::checkbox(null, false, [ 
     'id' => 'selectall', 
     'label' => 'Select all', 
     'class' => 'check-all', 
     ]);?> 
    </div> 
</div> 

和相應的腳本 -

var ids = []; 
function getID(id) { 
    var checkboxlist = document.getElementsByName('case'); 
    var itr = 0, checkedFlag = 0, uncheckedFlag = 0; 
    var inputElements = document.getElementsByClassName('check-all'); 
    if (id == 0) { 
     $(".check-all").prop("checked", $("#selectall").prop("checked")) 
    } 
    else { 
     for (var i = 0; inputElements[i]; ++i) { 
      if (inputElements[i].value == id) { 
       if (inputElements[i].checked == true) { 
        inputElements[i].checked = false; 
        break; 
       } 
       else { 
        inputElements[i].checked = true; 
        break; 
       } 
      } 
     } 
     while (itr < checkboxlist.length) { 
      if (checkboxlist[itr].checked == true) { 
       checkedFlag++; 
      } 
      else { 
       $("#selectall").prop("indeterminate", true); 
       uncheckedFlag++; 
      } 
      itr++; 
     } 
     if (checkedFlag == checkboxlist.length) { 
      $("#selectall").prop("indeterminate", false); 
      $("#selectall").prop("checked", true); 
     } 
     if (uncheckedFlag == checkboxlist.length) { 
      $("#selectall").prop("indeterminate", false); 
      $("#selectall").prop("checked", false); 
     } 
    } 
} 

而已 !!!