2016-06-13 3 views
-1

Ich habe die Kontrollkästchenliste automatisch von der Serverseite auf Bildlauf nach unten aktualisiert. Ich möchte wissen, ob es möglich ist, die nächsten 3 Checkboxen in der Liste automatisch zu aktivieren, nachdem das Kontrollkästchen aktiviert wurde.JavaScript oder jQuery, um die nächsten Kontrollkästchen automatisch zu aktivieren - Office365

zum Beispiel habe ich 5 Kontrollkästchen in der Liste

<input type="checkbox" name = "c1" value="1"/> 
<input type="checkbox" name = "c2" value="2"/> 
<input type="checkbox" name = "c3" value="3"/>  
<input type="checkbox" name = "c4" value="4"/> 
<input type="checkbox" name = "c5" value="5"/> 

Also, wenn Checkbox 2 auto geprüft geklickt wird dann die nächsten 3 - ist das möglich?

Ich suchte und spielte mit einer Checkbox-Bibliothek, die ich auf Github fand, aber es bietet nur eine Auswahl von Kontrollkästchen.

http://rmariuzzo.github.io/checkboxes.js/#limit-max-number-of-checked-checkboxes

Jsfiddle

+0

Ich habe versucht, mein Javascript-Code wenig lang ist, ist es so hier einfügen wird nicht gut sein, wird Frage lange machen, oder sollte ich fügen Sie diesen – user889030

+0

ok ich werde jsfiddle, – user889030

+0

jsfiddle machen: : https://jsfiddle.net/mcw54bp0/ – user889030

Antwort

1

Verwendung nextAll mit :lt(3) die nächsten 3.

$('[type="checkbox"]').change(function(){ 
 
    
 
    $(this).nextAll('[type="checkbox"]:lt(3)').prop('checked', this.checked); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input type="checkbox" name = "c1" value="1"/><br> 
 
<input type="checkbox" name = "c2" value="2"/><br> 
 
<input type="checkbox" name = "c3" value="3"/><br>  
 
<input type="checkbox" name = "c4" value="4"/><br> 
 
<input type="checkbox" name = "c5" value="5"/><br> 
 
<input type="checkbox" name = "c6" value="6"/><br> 
 
<input type="checkbox" name = "c7" value="7"/><br> 
 
<input type="checkbox" name = "c8" value="8"/><br>

KOMMENTAR es auf normales Kontrollkästchen Arbeit kommen aber ich, warum es nicht funktioniert fragen, auf Office365 Ankreuzfelder

office365 Checkboxen sind in div-Containern. Das bedeutet, dass Sie eine Ebene höher gehen müssen, dann nextAll, dann finden Sie das Kontrollkästchen in den 3 Containern.

$('.f-choice input[type="checkbox"]').change(function() { 
 
    $(this).parent().nextAll('.f-choice:lt(3)').find('[type="checkbox"]').prop('checked', this.checked); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p> 
 
    office 365 checkboxes 
 
</p> 
 
<div class="ms-ChoiceField f-choice" data-hint="Users" data-value="SelectItem"> 
 
    <input id="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-input dataListField ng-pristine ng-untouched ng-valid" type="checkbox" ng-model="item.isChecked" ng-change="UpdatedSelectedUsers(item)" tabindex="0" aria-checked="false" 
 
    aria-invalid="false"> 
 
    <label for="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-field"></label> 
 
</div> 
 
<div class="ms-ChoiceField f-choice" data-hint="Users" data-value="SelectItem"> 
 
    <input id="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-input dataListField ng-pristine ng-untouched ng-valid" type="checkbox" ng-model="item.isChecked" ng-change="UpdatedSelectedUsers(item)" tabindex="0" aria-checked="false" 
 
    aria-invalid="false"> 
 
    <label for="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-field"></label> 
 
</div> 
 
<div class="ms-ChoiceField f-choice" data-hint="Users" data-value="SelectItem"> 
 
    <input id="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-input dataListField ng-pristine ng-untouched ng-valid" type="checkbox" ng-model="item.isChecked" ng-change="UpdatedSelectedUsers(item)" tabindex="0" aria-checked="false" 
 
    aria-invalid="false"> 
 
    <label for="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-field"></label> 
 
</div> 
 
<div class="ms-ChoiceField f-choice" data-hint="Users" data-value="SelectItem"> 
 
    <input id="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-input dataListField ng-pristine ng-untouched ng-valid" type="checkbox" ng-model="item.isChecked" ng-change="UpdatedSelectedUsers(item)" tabindex="0" aria-checked="false" 
 
    aria-invalid="false"> 
 
    <label for="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-field"></label> 
 
</div> 
 
<div class="ms-ChoiceField f-choice" data-hint="Users" data-value="SelectItem"> 
 
    <input id="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-input dataListField ng-pristine ng-untouched ng-valid" type="checkbox" ng-model="item.isChecked" ng-change="UpdatedSelectedUsers(item)" tabindex="0" aria-checked="false" 
 
    aria-invalid="false"> 
 
    <label for="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-field"></label> 
 
</div> 
 
<div class="ms-ChoiceField f-choice" data-hint="Users" data-value="SelectItem"> 
 
    <input id="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-input dataListField ng-pristine ng-untouched ng-valid" type="checkbox" ng-model="item.isChecked" ng-change="UpdatedSelectedUsers(item)" tabindex="0" aria-checked="false" 
 
    aria-invalid="false"> 
 
    <label for="selectUser_07c4ab10-4ad0-44d1-9d65-aeee70be20a6" class="ms-ChoiceField-field"></label> 
 
</div>

+0

funktioniert es auf normalen Checkboxen aber ich frage mich, warum es nicht auf Office365 Checkboxen funktioniert, können Sie bitte überprüfen: https://jsfiddle.net/mmzth076/2/ – user889030

+0

siehe das Update . – BenG

+0

hmmm Klassen müssen hinzugefügt werden, wenn in sub div, was ist, wenn keine Klasse es top div :(können Sie bitte prüfen fiddle :: https://jsfiddle.net/mmzth076/3/ – user889030

0

Angenommen, Sie wollen einfach nur vor dem aktuellen einfach die Felder, und vorausgesetzt, Sie ihre ID-Tags gesetzt:

document.getElementById('c2').setAttribute('onclick', 'checkNextThree()'); 
function checkNextThree(){ 
    document.getElementById('c3').setAttribute('checked', 'checked'); 
    document.getElementById('c4').setAttribute('checked', 'checked'); 
    document.getElementById('c5').setAttribute('checked', 'checked'); 
} 

Wenn das Kontrollkästchen c2 aktiviert ist, Es legt die nächsten drei Kontrollkästchen fest, die überprüft werden sollen. Einige geringfügige Änderungen können erforderlich sein, wenn Sie die nächsten drei Kontrollkästchen aktivieren müssen, unabhängig davon, auf was geklickt wird, aber es gibt das Konzept.

Verwandte Themen