Joomla 5 Mitteilung

Wir freuen uns mitteilen zu können, dass seit dem 29. Januar 2024 alle unsere Joomla Erweiterungen mit Joomla 5 kompatible sind.

Für alle die gerade noch von Joomla 3 auf 4 aktualisieren: Anleitungen für die Joomla 4 Migration gibt es hier:

Es gibt nun auch eine eigenständige Dokumentation für Visforms für Joomla 4 und für Visforms auf Joomla 5

Forum

Visforms Subscription Inhaber können in unserem Forum Fragen stellen. Bitte mit dem entsprechenden Benutzer anmelden.
Jeder kann lesend auf das Forum zugreifen.

Bitte stellen Sie nur 1 Frage pro Thema.

Wichtig Angaben für fast jede Frage:
V1: Welche Visforms-Version läuft?
V2: Welche Joomla-Version läuft?
V3: Welche PHP-Version läuft?

Aufgrund von Feiertagen und Urlaub ist bei Anfragen im Forum in der Zeit vom 20. Dezember 2024 bis zum 8.Januar 2025 mit verlängerten Antwortzeiten zu rechnen.

Timing beim Abarbeiten von Scripten mit Reload-Feldern

Mehr
3 Monate 2 Wochen her - 3 Monate 2 Wochen her #10720 von Administrator IV
Hallo Heinz,

vielen Dank für das das Akeeba-Backup!

Zu: Wie erreiche ich denn unter diesen Umständen, dass meine Funktionen wirklich nur auf eine Änderung von Werten reagieren?

Der Code nutzt eine Status-Variable, um sich das  manuell ausgelöste 'change' des Radio-Feldes zu merken.

Der Code macht im Kommentar den Unterschied,
- ob das Radio-Feld aktuell geändert wurde
(Rücksetzen der Status-Variable erforderlich)
- oder ob das Radio-Feld erstmalig, also mindestens einmalig, geändert wurde
(Rücksetzen der Status-Variable nicht erforderlich).

Das für dich interessante Event im Logging ist: 'radio changed beforehand: sqlField'
Bedeutet: Es gab ein Reload des SQL-Feldes und davor wurde das Radio-Feld geändert.

Hier der passende Code:
Code:
// initialize after document is ready jQuery(document).ready(function() {     let radioField     = 'form2radio';    // Radio     let sqlField     = 'field16';        // SelectSQL     let radioChanged = false;           // State variable: radio got changed     // form is initialized     jQuery('.visform').bind('visformsInitialised', function() {         console.log('form initialized');     });     // SQL field     $('#' + sqlField).on('change', function() {         console.log('changed: sqlField');         // only if radio has changed beforehand         if(radioChanged) {             console.log('radio changed beforehand: sqlField');             // following line is necessary only             // 1: if multiple fields trigger the SQL field reload             // 2: and you want to react to then reload only after the Radio field has changed             // otherwise: the state variable may keep the value of 'true' (first time initialization)             radioChanged = false;         }     });     $('#' + sqlField).on('reloadsqloptions', function() {         console.log('reloadsqloptions: sqlField');     });     // radio field     $(`input[name="${radioField}"]`).on('change', function() {         console.log('changed: radioField');         radioChanged = true     });     $(`input[name="${radioField}"]`).on('reloadsqloptions', function() {         console.log('reloadsqloptions: radioField');     }); });


Hier das Konsole-Logging.
Die Kommentarzeilen und leeren Zeilen  sind nicht im originalen Logging enthalten.
Code:
// Formular startet reloadsqloptions: radioField reloadsqloptions: sqlField form initialized changed: sqlField // Radio Wert manuell umgestellt changed: radioField changed: sqlField radio changed beforehand: sqlField // Radio Wert manuell umgestellt changed: radioField changed: sqlField radio changed beforehand: sqlField


Hinweis:
Im Unterschied zu deiner Beschreibung oben, tritt in meiner Joomla-Instanz aus deinem Akeeba-Backup folgendes auf:
Ohne dass etwas eingegeben oder geändert wird, wird das change-Event des SQL-Feldes nur genau 1x gefeuert.

Liebe Grüße, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).
Letzte Änderung: 3 Monate 2 Wochen her von Administrator IV.

Mehr
3 Monate 2 Wochen her #10721 von MaliRaj
Hallo Ingmar,
vielen Dank für deine Hilfe. zu 
Ohne dass etwas eingegeben oder geändert wird, wird das change-Event des SQL-Feldes nur genau 1x gefeuert.

Das liegt daran, dass ich zum Zeitpunkt des Backups beim Radio einen Standard = Value1 gesetzt hatte. Nimm diesen mal raus, dann feuert das SQL-Feld 3x beim Laden der Seite.

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)

Mehr
3 Monate 2 Wochen her #10722 von MaliRaj
Ich habe dein Script etwas erweitert,  um die Ausgabe des tatsächlichen Wertes des SQL:
Code:
// initialize after document is ready jQuery(document).ready(function() {     let radioField     = 'form2radio';    // Radio     let sqlField     = 'field16';        // SelectSQL     let radioChanged = false;           // State variable: radio got changed     // form is initialized     jQuery('.visform').bind('visformsInitialised', function() {         console.log('form initialized');     });     // SQL field     $('#' + sqlField).on('change', function() {         console.log('changed: sqlField - value = ' +  $('#' + sqlField).val() );         // only if radio has changed beforehand         if(radioChanged) {             console.log('radio changed beforehand: sqlField');             // following line is necessary only             // 1: if multiple fields trigger the SQL field reload             // 2: and you want to react to then reload only after the Radio field has changed             // otherwise: the state variable may keep the value of 'true' (first time initialization)             radioChanged = false;         }     });     $('#' + sqlField).on('reloadsqloptions', function() {         console.log('reloadsqloptions: sqlField - value = ' +  $('#' + sqlField).val());     });     // radio field     $(`input[name="${radioField}"]`).on('change', function() {         console.log('changed: radioField');         radioChanged = true     });     $(`input[name="${radioField}"]`).on('reloadsqloptions', function() {         console.log('reloadsqloptions: radioField');     }); });
Die Konsole wirft (nur beim Laden - ohne manuelle Änderung) Folgendes aus:
2x reloadsqloptions: radioField
reloadsqloptions: sqlField - value = 
form initialized
3x changed: sqlField - value = 
 

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)

Mehr
3 Monate 2 Wochen her #10723 von Administrator IV
Hallo Heinz,

dann kommen auch bei mir 3 change-Events direkt hintereinander.
Das ist mehr oder weniger bei Design und normal.

Wie und warum es genau entsteht, weiß ich jetzt auch nicht auswendig.
Ist aber auch nicht wesentlich, da die Lösung mit der Status-Variablen weiterhin korrekt funktioniert.

Liebe Grüße, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).

Mehr
3 Monate 2 Wochen her #10724 von Administrator IV
Genau, mit meinem originalen Script lautet die Ausgabe ohne manuelle Änderung (nur Laden des Formulars) nun ebenfalls wie folgt:
Code:
reloadsqloptions: radioField reloadsqloptions: radioField reloadsqloptions: sqlField form initialized changed: sqlField changed: sqlField changed: sqlField

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).

Mehr
3 Monate 2 Wochen her #10725 von MaliRaj
Hallo Ingmar, die Lösung mit der Statusvariablen bringt mich leider nicht weiter. Mir ist es ja egal, ob das Radio-Feld ein reload erzwungen oder nur das SQL-Feld geändert wurde. Ich brauche das Event, wenn sich der Wert des SQL-Feldes ändert.  Ich ging davon aus, dass ein .change() bei einer Änderung des SQL-Wertes ausgelöst wird, nicht aber, wenn der Wert gleich bleibt. Und es löst nun mal nach der Initialisierung 3x aus, ohne dass sich der Wert 1x geändert hätte. 0x wäre für mich logisch. Nach diesen 3x "umsonst" feuern arbeitet das SQL-Change-Event ja korrekt: 1x Wert ändern löst genau 1x ein change aus. Ich komme also mit den 3x "umsonst"-feuern nicht klar. 

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)

Moderatoren: Administrator AVAdministrator IV
Powered by Kunena Forum