Jörg: Checkbox in nicht sichtbarer Tabellenzeile ansprechen

Beitrag lesen

Hallo Rolf,

ohne Kenntnis Deiner Seite lässt sich da wenig sagen.

Ja, das ist nachvollziehbar. Deshalb umso mehr Dank für Eure Hilfe bis hierher.

Aber eins fällt mir gerade auf:

$(".myElement") liefert ein wrapped set aller Elemente mit dieser Klasse. Wenn Du also eine Tabelle mit drölftausend Zeilen hast und die Checkbox darin jeweils die Klasse "myElement" hat, liefert $(".myElement") drölftausend Checkboxen.

$(".myElement").is(":visible") prüft, ob irgendein Element im matched set sichtbar ist. Hast Du 1000 Zeilen und eine ist sichtbar, ist is(":visible") immer noch true.

$(".myElement").prop("checked") liefert das checked-Property des ersten Eintrags in diesem wrapped set

$(".myElement").prop("checked", true) setzt das checked-Property für alle Einträge in diesem wrapped set

Das erklärt, warum ich für mich undefinierte Ergebnisse erhalten habe.

Offenbar soll ein Klick auf .My_all_Check den Check-Status aller sichtbaren Checkboxen invertieren.

Nicht wirklich. Im Grunde möchte ich Checkboxen kummuliert an- und abhaken können. Das ist mit einem einzigen Button (o.ä.) unmöglich. Ich ahbe es jetzt über 2 verschiedene gelöst, dann ist es recht einfach

$(\"#all_Check\").click(function(event) {
    event.stopPropagation();
    $('.myElement:visible').prop('checked', true);
});

$(\"#all_NotCheck\").click(function(event) {
    event.stopPropagation();
    $('.myElement:visible').prop('checked', false);
});
for (let element of document.querySelectorAll("input[type=checkbox].myElement")) {
   if (element.style.display != 'none')
       element.checked = !element.checked;
};

Wollte bei mir nicht arbeiten. Und hätte wohl auch nicht erreicht, dass ich kummuliert an- und abhake, oder?

Wie gesagt, ich habe es jetzt mit 2 Links (Buttons) gemacht und es funktioniert zuverlässig, wie gewünscht.

IUch habe aber jetzt noch ein ganz anderes Problem. Nämlich möchte ich in meine Tabellensuche eine "Reset-Funktion" einbauen, die bei Klick das Eingabefeld leert, den Focus auf das Eingabefeld setzt und eine neue Suche ermöglicht. Nicht weiter schwierig, wenn da nicht das Problem wäre, dass das Ergebnis der vorherigen Suche beibehalten wird.

Etwas später:

Genau dieses Problem hatte ich doch schonmal. Und siehe da, Du hast es seinerzeit schon gelöst. Ich habe mir alles nochmal durchgelesen und gemerkt, dass ich mit $('.qs_input').val('').trigger('keyup').focus(); auf dem Holzweg war, während $('.qs_input').val('').trigger('keydown').focus(); das erreicht, was ich brauchte.

Also jetzt sind tatsächlich alle Probleme gelöst.

Danke an alle Helfer dieses Thema und an Rolf doppelten Dank wegen der Hilfe seinerzeit.

Jörg