2016-04-14 8 views
1

内のすべての条件にチェックボックスを動作させるために、私は次のシナリオを処理するjqueryの条件をしたい -どのようにjqueryの

2選択したチェックボックスの

1)いくつかの)選択したチェックボックスのすべて

私は両方を1つのループに入れたいです。現在、私はに次のコードをしたすべてのチェックボックスのみ選択 - など

$('.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>'; 
} 

を、どのように私は、両方のシナリオを処理する必要があります単一のループ?チェックが終わったらクッキーを送ってきました。

+0

あなたは同じようなフィドルを共有してもいいですか?私たちには '$ contacts 'はありません。 – 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); 
     } 
    } 
} 

それでおしまい !!!