Joomla 5 Notice

We are pleased to announce that as of January 29, 2024, all of our Joomla extensions are compatible with Joomla 5.

For all who are still updateing from Joomla 3 to Joomla 4: Joomla 4 Migration instructions are available here:

There is now a separate Documentation for Visforms for Joomla 4 and for Visforms for Joomla 5!

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?

Timing beim Abarbeiten von Scripten mit Reload-Feldern

More
2 months 2 weeks ago - 2 months 2 weeks ago #10720 by Administrator IV
Replied by Administrator IV on topic Timing beim Abarbeiten von Scripten mit Reload-Feldern
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 :-).
Last edit: 2 months 2 weeks ago by Administrator IV.

More
2 months 2 weeks ago #10721 by 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)

More
2 months 2 weeks ago #10722 by 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)

More
2 months 2 weeks ago #10723 by Administrator IV
Replied by Administrator IV on topic Timing beim Abarbeiten von Scripten mit Reload-Feldern
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 :-).

More
2 months 2 weeks ago #10724 by Administrator IV
Replied by Administrator IV on topic Timing beim Abarbeiten von Scripten mit Reload-Feldern
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 :-).

More
2 months 2 weeks ago #10725 by 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)

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum