Joomla 6 Notice

We are pleased to announce that all our Joomla extensions have been compatible with Joomla 6 since October 14th, 2025.

For those currently upgrading from Joomla 3 to 4: Instructions for Joomla 4 migration can be found here:

There are standalone documentations Visforms Joomla 4, Visforms Joomla 5 and Visforms Joomla 6.

Forum

Visforms Subscription user can ask questions in our forum. Please log in with the relevant user first.
Everybody can access the forum for reading.

Please only ask 1 question per topic.

Important information for almost every question:
V1: Which Visforms version is running?
V2: Which Joomla version is running?
V3: Which PHP version is running?

Change-Event in FEWA bei SQL-Liste als Tabellenansicht fehlt

More
1 month 2 weeks ago #12447 by MaliRaj
Ich habe eine Funktion, die bisher in Version 5 auf das Nachladen/Ändern (Change-Event) einer SQL-Liste, die als Tabellenansicht angezeigt wird, reagierte. Hier im Beispiel das Feld 'tableId':

Code:
$('#' + tableId).on('change', function() {...


Das löst nun in Version 6 nicht mehr aus. Hingegen ein Change auf eine SQL-Liste ohne Tabellenansicht, also normale Optionsliste
Code:
$('#' + zeitraumField).change(clearSyntax);


funktioniert nach wie vor.
Die Frage ist also konkret:
1. Gibt es ein change-Event noch bei einer SQL-Liste, die als Tabelle dargestellt wird, wenn sie im Formular angezeigt wird und wenn sie sich durch Auswahl anderer Felder ändert?
Falls beabsichtigt "nein":
2. Wie kann ich in FeWa mit JavaScript auf solch eine Änderung reagieren, wenn es kein Change-Event mehr gibt?

Freundliche Grüße aus PM
Heinz
(Joomla 6.1.3 / Visforms+Subscription 6.2.1 / PHP 8.3.33)

More
1 month 1 week ago #12467 by Administrator AV
Hallo Heinz,

mit dem Übergang auf Joomla 6 haben wir das Visforms Javascript komplett überarbeitet.
Statt jQuery verwendet Visforms jetzt fast überall natives Javascript.
Nur der Validator, das Searchable Select und die jSignature verwenden noch jQuery.

In früheren Versionen wurde das jQuery Change Event 'zur internen Kommunikation' des Visforms Javascrsipts an mehreren Stellen dispatched.
Unter anderem auch nach dem Relaod von SQL Options-Listen und SQL-Datenlisten.
Das Dispatchen des Change Events an diesen Stellen hat das Javascript und das Laden von Formularen (insbesondere wenn diese viele SQL Felder haben) langsam gemacht.

Das neue Visforms Javascript dispatched selbst keine Change Events mehr.
Change Events werden jetzt nur noch durch echte Benutzer-Interaktionen mit einem Feld ausgelöst.
Für die interne Kommunikation verwendet das Visforms Javascript jetzt unterschiedliche Custom Events.

Dass das Change Event auf der Options-Liste funktioniert erstaunt mich.
Die einzige Erklärung die mir hierzu einfällt ist, dass die Listbox durchsuchbar ist?
Dann würde das jQuery Searchable Select eingebunden und dieses dispachted Change Events.

Die Antwort auf deine 1. Frage lautet also:
Ja, es ist bei Design, dass das Change Event nicht mehr getriggered wird.

Die Antwort auf deinen 2. Frage lautet:
Im Moment gibt es keine Möglichkeit für dich zu Erfahren, dass sich die Werte geändert haben.
Visforms führt intern den Relaod aus, ohne anschließend ein Event zu dispatchen, auf das du zugreifen könntest.

Ich habe dazu einen Issue zur Entwicklung in der Wunschliste angelegt:
Issue [VF-1801] Dispatch Custom Events as Replacement of the Change Event after SQL Reload

Liebe Grüße,
Aicha

:idea: I recommend you the new and up-to-date documentation for Joomla 6:
docs.joomla-6.visforms.vi-solutions.de/en/docs/
Please ask only 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 6:
docs.joomla-6.visforms.vi-solutions.de/docs/
Bitte immer nur 1 Frage pro Thema stellen :-).
The following user(s) said Thank You: MaliRaj

More
1 month 5 days ago - 1 month 5 days ago #12471 by MaliRaj
Hallo Aicha, Danke für die hilfreichen Informationen. Ich finde ein change-Event eigentlich auch ganz gut, wenn "wirklich" etwas geändert wurde, also durch den Benutzer im Formular oder Edit. Vielleicht lässt es sich auch anders lösen, denn eine Änderung der SQL-Liste (in Edit ausführen) wird letztlich bei mir auch nur durch ein "echtes" Ändern anderer Felder ausgelöst. Daher funktioniert das ChangeEvent dort "noch immer". Und auf deren Änderung könnte ich ja auch reagieren, um eine Funktion (ConvertToImage) anschließend auszuführen. Konkret: ich habe 3 Felder ( 1x Radio, 1x Listbox-SQL, 1x Listbox) die als Reload-Felder für die SQL-Tabellen-Liste fungieren. Beim Laden der EditView werden die 3 Felder mit den gespeicherten Werten gefüllt und die SQL-Tabellenliste wegen "in Edit ausführen", geladen/aktualisiert. Zum Zeitpunkt "visformsInitialised" Ist die Tabelle "fertig" (dachte ich). Sie enthält dann eine Spalte mit BildDateinamen. Mit JavaScript erzeuge ich daraus eine echte HTML-Bildanzeige. Je nach Inhalt der 3 Steuerfelder werden so bis zu 7 oder 8 Bilder (oder 0 = auch kein passendes Bild) als Tabelle (= kleine Bildergalerie) angezeigt. Das funktioniert bisher auch noch. Allerdings verschwinden die Bilder gleich wieder, ohne dass eine Option händisch geändert wurde und es ist dann wieder "nur" die Tabelle zu sehen. Scheinbar ändert oder aktualisiert visforms die Tabelle noch einmal. Ich vermute, dass die Tabelle 3x (wegen der 3 Reload-Felder) beim Initialiseren aktualisiert wird. Aber dann wäre aber das "visformsInitialised" zu mein Verständnis früh. Ich habe also noch nicht verstanden, warum sich nach visformsinitialised noch etwas ändert. Wenn die Tabelle wirklich "fertig" wäre, könnte ich mit einer kleinen Verzögerung nach dem Ändern eines der Steuerfelder, durch das dadurch entstehende Change meine Funktion "ConvertToImage" jedes Mal neu ausführen. Im Moment scheitert es also daran, dass sich die Tabelle nach dem Konvertieren zu Bildern noch einmal ändert, und ich im Moment keine Möglichkeit sehe, das zu erkennen. In Version 5 hatte ich das mit dem ChangeEvent auf die Tabelle selbst abfangen können. Die Frage ist also, ob wirklich ein neues Change-Event nötig ist oder ob ich meinen Code vielleicht entsprechend anpassen kann, wenn ich nur sicherstellen kann, dass alle Felder "fertig" sind.

Freundliche Grüße aus PM
Heinz
(Joomla 6.1.3 / Visforms+Subscription 6.2.1 / PHP 8.3.33)
Last edit: 1 month 5 days ago by MaliRaj.

More
3 weeks 5 days ago #12488 by Administrator AV
Hallo Heinz,

ich habe ein neues Custom Event in das Visforms Javascript eingefügt.
Es wird dispatched, wenn in einem SQL Feld der Reload abgeschlossen ist und neuen Werte in das HTML eingefügt sind.

Das Event heißt 'visfieldReloaded'.

Es gibt ein Pre-Release für:
Joomla 6 und die aktuelle Visforms Version 6.2.1.

Bitte die alte Datei zuvor sichern, falls es unerwartet zu Problemen kommen sollte.

Die folgende Datei herunterladen:
- vi-solutions.de/forum-bugfixes/visforms.js_6.2.2.txt

Die heruntergeladene Datei umbenennen in:
- visforms.js

Mit der heruntergeladenen und umbenannten Datei die folgende Datei auf dem Server überschreiben:
- media/com_visforms/js/visforms.js

Nutzung:
Code:
document.addEventListener('visfieldInitialized', function () {     let table = document.getElementById('field1243');     table.addEventListener('visfieldReloaded', function() {         console.log('table reloaded');     }) })

Liebe Grüße,
Aicha

:idea: I recommend you the new and up-to-date documentation for Joomla 6:
docs.joomla-6.visforms.vi-solutions.de/en/docs/
Please ask only 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 6:
docs.joomla-6.visforms.vi-solutions.de/docs/
Bitte immer nur 1 Frage pro Thema stellen :-).

More
3 weeks 2 days ago #12495 by MaliRaj
Nun habe ich meine Scripte entsprechend angepasst und alles funktioniert wieder wie gewünscht. Herzlichen Dank für eure gute Arbeit.

Freundliche Grüße aus PM
Heinz
(Joomla 6.1.3 / Visforms+Subscription 6.2.1 / PHP 8.3.33)
The following user(s) said Thank You: Administrator AV

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum