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.

JavaScript mit Event onVisformsFormPrepare richtig nutzen

Mehr
1 Jahr 8 Monate her - 1 Jahr 5 Monate her #9132 von MaliRaj
Ein Radiobutton (Field264) in einem Formular mit den beiden Optionen JA/NEIN soll abhängig von UserLoggedIn JA oder NEIN mit JavaScript im Event onVisformsFormPrepare gesetzt werden und eine manuelle Änderung danach verhindert werden. Das Setzen der Radio-Button erfolgt auch (kann man ganz kurz sehen), wird dann aber scheinbar durch den weiteren Seitenaufbau überschrieben.

Code:
$user = JFactory::getUser(); if (!$user->id) {     $message = "Auswahl nur eingeloggt möglich";     // Java-Script, welches die manuelle Nutzung der Radiobutton Feld F264 für nicht eingeloggte User verhindert     $script = 'jQuery(document).ready(function () {         jQuery("#field264_1").prop("checked", true); // auf NEIN setzen         jQuery("#field264_0").click(function() { // Klick auf JA unterbinden             alert("'.$message.'");             return false;             });         });';     JFactory::getDocument()->addScriptDeclaration($script); }


Kann ich da am Timing etwas ändern oder müsste ich da ganz anders rangehen?

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)
Letzte Änderung: 1 Jahr 5 Monate her von MaliRaj. Begründung: Themensymbol geändert [gelöst]

Mehr
1 Jahr 8 Monate her - 1 Jahr 8 Monate her #9138 von Administrator IV
Hallo Heinz,

Visforms benutzt selbst das Event jQuery(document).ready(), um eine Menge JavaScript auf dem Formular und den Feldern ablaufen zu lassen.
Wenn die Felder fertig initialisiert sind, feuert Visforms das JavaScript Custom-Event 'visfieldInitialized'.

Das Custom-Event wird für das HTML <form>-Element mit der id="visform[Formular-ID]" gefeuert.
Wobei [Formular-ID] für die Formular-ID steht.

Dein Code funktioniert, wenn du dieses Event verwendest.

Der folgende Code funktioniert mit meinem Feld F336 wie gewünscht:
Code:
$user = JFactory::getUser(); if (!$user->id) {     $fid = $visforms->id;     $field = "field336";     $message = "Auswahl nur eingeloggt möglich";     $script = '     jQuery(document).ready(function () {         jQuery("#visform'.$fid.'").on("visfieldInitialized", function() {             // console.log("visfieldInitialized started");             jQuery("#'.$field.'_1").prop("checked", true); // auf NEIN setzen             jQuery("#'.$field.'_0").click(function() { // Klick auf JA unterbinden                 alert("'.$message.'");                 return false;             });         });     });';     JFactory::getDocument()->addScriptDeclaration($script); }

Alternativ zur einer Meldung für den Benutzer, kannst du auch einfach alle nicht ausgewählten Optionen deaktivieren.
Trotzdem wird der Feldwert mit dem Formular weiterhin ganz normal mitgeschickt.
Ein 'disabled' auf ein ganzes Control unterdrückt das ja ansonsten (Wert wird nicht mitgeschickt).

Es gibt in diesem Fall aber kein click-Event mehr und eine Meldung an den Benutzer ist nicht länger möglich.
Dafür wären aber alle nicht ausgewählten Optionen optisch ausgegraut.
Anstelle des click-Handlers steht dann einfach folgende Zeile:
Code:
jQuery("[id^='.$field.'_]:not(:checked)").attr("disabled", true);

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: 1 Jahr 8 Monate her von Administrator IV.
Folgende Benutzer bedankten sich: MaliRaj

Mehr
1 Jahr 8 Monate her - 1 Jahr 8 Monate her #9140 von MaliRaj
Hallo Ingmar, herzlichen Dank für deine Tipps und die Erklärungen dazu. Das hilft mir enorm weiter.

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)
Letzte Änderung: 1 Jahr 8 Monate her von MaliRaj.

Mehr
1 Jahr 8 Monate her - 1 Jahr 8 Monate her #9144 von MaliRaj
Ich konnte das jetzt wie gewünscht umsetzen.('$visforms->id' gibt es in meinem Event noch nicht; '$form->id' schafft Abhilfe)
Auch das Deaktivieren aller nicht ausgewählten Optionen ist eine tolle Lösung. Besten Dank für diesen Tipp/Vorschlag!
Was ich noch nicht lösen konnte:
1. den Formular-Parameter "Double-Opt-In" für eingeloggte User zu deaktivieren; ich finde/erkenne in onVisformsFormPrepare weder in $forms, noch in $menu_params, den passenden Parameter
2. die mit dem JavaScript gesetzte Option hat in der FormularKonfiguration, wenn sie per Maus angeklickt wird, ein bedingtes Feld (ein Editor wird eingeblendet). Dieses bedingte Feld wird trotz folgendem Code nicht "nachgeladen" :
Code:
jQuery("#'.$field.'_4").prop("checked", true).trigger("change"); // Option setzen (Nachricht an Webmaster)

Könntest du mir dabei auch behilflich sein?

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)
Letzte Änderung: 1 Jahr 8 Monate her von MaliRaj.

Mehr
1 Jahr 8 Monate her #9145 von Administrator IV
Hallo Heinz,

hier erstmal kurz zu Frage 2:

Mit dem folgenden JavaScript wird das bedingte Feld vom Typ Textarea mit der ID=342 komplett aus dem Mechanismus herausgenommen und immer angezeigt.
Code:
jQuery('div.field342').removeClass('conditional').css('display', '');
Mit den folgenden JavaScript-Beispielen passiert das gleiche.
Ich habe aber in der Feldkonfiguration der Textarea, Reiter 'Erweitert', Gruppe 'Layout' folgenden Parameter gesetzt:
Parameter 'CSS Klasse Control-Gruppe' = 'vfcg_textarea-1'.
Code:
jQuery('div.vfcg_textarea-1').removeClass('conditional').css('display', '');
In diesem Fall würde auch immer folgendes funktionieren:
Code:
jQuery('.vfcg_textarea-1').removeClass('conditional').css('display', '');

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
1 Jahr 8 Monate her - 1 Jahr 8 Monate her #9146 von MaliRaj
Dankeschön für deine schnelle Beantwortung!

Code:
jQuery('div.field342').removeClass('conditional').css('display', '');
hat nicht (auf die Schnelle) funktioniert, aber dies (doppelte an Stelle von einfachen Anführungszeichen):

Code:
jQuery("div.'.$field2.'").removeClass("conditional").css("display", ""); // Textarea (Editor) immer anzeigen

Es funktioniert allerdings dann die Validierung (Pflichtfeld, Min.Länge usw.) auch nicht mehr für dieses Feld, das hattest du sicher mit "komplett" gemeint.

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)
Letzte Änderung: 1 Jahr 8 Monate her von MaliRaj.

Moderatoren: Administrator AVAdministrator IV
Powered by Kunena Forum