Auf meiner Website kann der Benutzer 'Kontaktkategorien', 'Elementkategorien' erstellen und entscheiden, welche Kontaktkategorie welchen Elementkategorien zugeordnet ist. Mehrere Positionskategorien können einer Kontaktkategorie zugeordnet werden und umgekehrt.Jquery, Kontrollkästchen nur deaktivieren, wenn zwei andere Kontrollkästchen deaktiviert sind
https://jsfiddle.net/vuuxn5gf/
Hier ist der HTML-Code.
<h1>
New Contact
</h1>
<input type="checkbox" value="1" id="user_name">Contact category 1<br>
<input type="checkbox" value="2" id="user_name">Contact category 2<br>
<input type="checkbox" value="3" id="user_name">Contact category 3<br><br>
<input type="checkbox" value="a" id="user_name">Item category a<br>
<input type="checkbox" value="b" id="user_name">Item category b<br>
<input type="checkbox" value="c" id="user_name">Item category c
und die JQuery
var chk1 = $("input[type='checkbox'][value='1']");
var chk2 = $("input[type='checkbox'][value='2']");
var chk3 = $("input[type='checkbox'][value='3']");
var chka = $("input[type='checkbox'][value='a']");
var chkb = $("input[type='checkbox'][value='b']");
var chkc = $("input[type='checkbox'][value='c']");
chk1.on('change', function() {
chka.prop('checked', this.checked);
chkb.prop('checked', this.checked);
});
chk2.on('change', function() {
chkb.prop('checked', this.checked);
});
chk3.on('change', function() {
chka.prop('checked', this.checked);
chkc.prop('checked', this.checked);
});
In diesem Beispiel 1 Kontakt Kategorie Positionstyp zugeordnet ist, eine & b, Kontaktkategorie 2 auf Positionstyp B und Kontaktkategorie zugeordnet 3 mit dem Positionstyp ein & c.
SITUATION: Ein Benutzer fügt einen neuen Kontakt hinzu. Der Benutzer legt den neuen Kontakt in die Kontaktkategorie 1 ein. & 2. Auf diese Weise wird die Elementkategorie & über den JQuery-Code aktiviert.
PROBLEM: Wenn der Benutzer unchecks Kontaktkategorie 1, beide Artikel Kategorie ein & b gets deaktiviert. Während der Positionstyp b noch geprüft werden sollte, weil die Kontaktkategorie 2 noch geprüft wird.
SIDENOTE: In der Praxis wird dies nicht nur 3 Kategorien sein. Aber ein größerer Maßstab, also hoffe ich, dass das mit etwas ähnlichem gelöst werden kann.
chk1.on('checked', function() {
chka++;
chkb++;
if (chka > 0) chka.prop('change', this.checked);
});
chk1.on('unchecked', function() {
chka--;
chkb--;
if (chka > 0) chka.prop('change', this.checked);
});
Wenn Sie hoffen, jede Checkbox explizit definiert, Scale-up, mit ist keine gute Lösung. Es ist viel besser, einen Satz von abhängigen Elementen in einer Art von dynamisch generierten Mengen zu definieren und anschließend die Abhängigen zu testen, wenn eine Statusänderung vorliegt. –
Wo ist definiert, welche Kategorie welchem Kategorietyp zugeordnet ist? Ich denke, Sie müssen das mit einem Array lösen, das alle Daten enthält, und alle Checkboxen bei jeder Änderung aktivieren/deaktivieren. – Jeff
IDs ** muss ** eindeutig sein – j08691