2016-04-14 8 views
1

ich eine jquery Bedingung will, die folgenden Szenarien behandelt -wie mit allen Bedingungen in jquery Kontrollkästchen für den Betrieb

1) Einige des ausgewählten Kontrollkästchen

2) das Kontrollkästchen All ausgewählten

Ich möchte sie beide in einer einzigen Schleife. Zur Zeit habe ich den folgenden Code alle Kontrollkästchen wählen nur -

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

und Kontrollkästchen in meinem PHP-Code als Einnahme -

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>'; 
} 

Also, wie soll ich beide Szenarien behandeln in eine einzelne Schleife? Ich habe einen Cookie gesendet, wenn die Überprüfung abgeschlossen ist.

+0

Würde es Ihnen etwas ausmachen, eine Geige davon zu teilen? Wir haben keine $ Kontakte mit uns .. – Rayon

+0

Verwenden Sie angularjs oder nicht? Wenn nicht, legen Sie das Etikett bitte nicht an. – Walfrat

+0

Entschuldigung dafür, ich habe es gerade von den Tags entfernt –

Antwort

0

fand ich eine Lösung & jetzt tun dies auf folgende Weise -

PHP-Code -

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> 

und das jeweilige Skript -

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); 
     } 
    } 
} 

Das ist es !!!

Verwandte Themen