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?

Datumfeld

Mehr
1 Woche 6 Tage her #10810 von rolaloe
Datumfeld wurde erstellt von rolaloe
Ich suche eine Lösung für folgende Vorgabe:

1. Eingabe eines Geburtsdatums
2. Prüfen ob das Geburtsdatum mindestens 18 Jahre vom aktuellen Tagesdatum ist
3. Wenn das Datum kleiner als 18 Jahre ist, sollen weitere Felder ausgegeben werden (das bekomme ich hin)

Mir geht es darum, wie ich prüfe ob der Zeitraum zwischen dem aktuellen Tagesdatum und dem eingegebenen Datum mindestens 18 Jahre ist.
Wie kann ich das prüfen und was muss ich einstellen?

Gruß Roland

Mehr
1 Woche 5 Tage her - 1 Woche 5 Tage her #10812 von Administrator IV
Administrator IV antwortete auf Datumfeld
Hallo Roland,

ab Version 5.1.0 gibt es für das Datums-Feld auf dem Reiter 'Grundeinstellungen' eine neue Option 'Mindestalter validieren'.
Damit kannst du deine Prüfung auf 'mindestens 18 Jahre' durchführen.
Das neue Feature ist noch nicht dokumentiert.

Zitat:
Prüfen, dass der gewählte Datumswert einem Mindestalter entspricht.
Geben Sie das Mindestalter als Zahl ein.

vi-solutions.de/forum-uploads/age-date-v...-subscription-de.png

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 Woche 5 Tage her von Administrator IV.

Mehr
1 Woche 5 Tage her #10814 von rolaloe
rolaloe antwortete auf Datumfeld
Diese Funktion ist mir bekannt und funktioniert.
Dann versuche ich meine Frage anders zu formulieren.
Ich habe ein Geburtsdatum und ein aktuelles Tagesdatum. Diese beiden Datums kann ich berechnen und erhalte als Ergebnis die Tage zwischen den beiden Werten. Ich muss dabei auch an die Schaltjahre denke. Sind diese bei der Berechnung berücksichtigt?
Wie kann ich jedoch diese beiden Datums so berechnen um sicher zu gehen, dass das Alter mindestens 18 Jahre ist?
 

Mehr
1 Woche 5 Tage her #10818 von Administrator IV
Administrator IV antwortete auf Datumfeld
Hallo Roland,

ich habe die Dokumentation um das neuen Feature erweitert.
Validierung des Mindestalters:
docs.joomla-5.visforms.vi-solutions.de/d...ng-des-mindestalters

Zitat:
Schaltjahre mit Schalttagen werden bei der Berechnung berücksichtigt.

Zu: Sind diese bei der Berechnung berücksichtigt?
Ja.

Zu: Wie kann ich jedoch diese beiden Datums so berechnen um sicher zu gehen, dass das Alter mindestens 18 Jahre ist?
Du kannst das Verhalten mit etwas eigenem CSS/JavaScript und den Visforms 'Frontend Webassets' erreichen.
Frontend Webassets:
docs.joomla-4.visforms.vi-solutions.de/d...-frontend-webassets/
Alle Einstellungen werden im Formular vorgenommen:
docs.joomla-4.visforms.vi-solutions.de/d...formular-vorgenommen

Visforms implementiert deine geforderte Berechnung im JavaScript im Browser bereits.
Wenn du also ähnliches an anderer Stelle im Formular mit den FEWA selbst durchführen möchtest, dann schaue dir einfach an, wie Visforms es macht.
Kopiere die vorhandene Lösung und passe sie an deine Situation (dein Geburtsdatum in einem Feld und dein aktuelles Tagesdatum) an.

Falls du damit nicht klar kommen solltest, können wir dir gerne auch ganz praktisch weiterhelfen.
Ich hoffe, du hast Verständnis dafür, dass wir diese individuelle Leistung nur basierend auf unserem aktuellen Stundensatz und mindestens 1 Stunde anbieten können.

Lange Rede kurzer Sinn:

Das neue Feature 'Validierung des Mindestalters' macht genau das, was du hier wiederholt nachfragst.
- Angabe der Geburtstages (ein Datum in der Vergangenheit).
- Verwendung des aktuellen Datums.
- Berechnung der Differenz in Jahren.
- Berücksichtigung des Schaltjahre mit Schalttagen
  (wäre ohne diese Berücksichtigung auch ziemlich unnütz).
- Plus Validierung mit Fehlermeldung und Verhinderung des Abschickens des Formulars.

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 Woche 3 Tage her #10822 von rolaloe
rolaloe antwortete auf Datumfeld
Hallo Ingmar,

vielen Dank für die ausführliche Erklärung.
Die Validierung des Mindestalter ist mir klar gewesen.
Das Problem ist, dass das Formular dann nicht abgeschickt wird. Ich möchte gerne erreichen, dass wenn das vorgegebene Mindestalter nicht erreicht ist weitere Felder eingeblendet werden und das Formular trotzdem abgesendet werden kann.
Ist dies realisierbar?

Gruß Roland

Mehr
6 Tage 18 Stunden her - 5 Tage 21 Stunden her #10836 von Administrator IV
Administrator IV antwortete auf Datumfeld
Hallo Roland,

hier ein komplettes lauffähiges Beispiel mit deiner Anforderung.

Das Formular hat folgende 4 Felder.

1 - 'birth-date': Feld vom Typ 'Datum':
Auswahl des Geburtsdatums.
2 - 'listbox-age': Feld vom Typ 'Listbox':
Listbox mit den 3 Zuständen:
     - Nichts ausgewählt.
     - '0' ausgewählt.
     - '1' ausgewählt.
3a - 'text-minor': Feld vom Typ 'Text':
Texteingabe für den Fall 'Jugendlicher'.
Bedingtes Feld, erscheint nur für Listbox = '0'.
3b - 'text-adult': Feld vom Typ 'Text':
Texteingabe für den Fall 'Erwachsener'.
Bedingtes Feld, erscheint nur für Listbox = '1'.

Das Formular ohne das FEWA JavaScript.

vi-solutions.de/forum-uploads/age-verifi...orm_no-selection.png
vi-solutions.de/forum-uploads/age-verifi...form_0-selection.png
vi-solutions.de/forum-uploads/age-verifi...form_1-selection.png

Das Formular mit dem FEWA JavaScript.

vi-solutions.de/forum-uploads/age-verifi...rm_no-birth-date.png
vi-solutions.de/forum-uploads/age-verifi...minor-birth-date.png
vi-solutions.de/forum-uploads/age-verifi...adult-birth-date.png

Die Formular-Konfiguration, Reiter 'Frontend Webassets' JavaScript mit dem JavaScript (Unter-Reiter 'Form').

vi-solutions.de/forum-uploads/age-verifi...nfiguration_FEWA.png

Das Formular hat folgenden JavaScript Code.

Code:
const dateFieldID   = '640'; // Visforms date field ID of field list const selectFieldID = '641'; // Visforms select field ID of field list jQuery(document).ready(function() {     console.log('FEWA script loaded');     jQuery('.visform').bind('visformsInitialised', function() {         // start after form is initialized         console.log('visformsInitialised');         // hide listbox-age control group         jQuery(`div.field${selectFieldID}`).css('display', 'none');         jQuery(`#field${dateFieldID}`).on('change', function() {             let value = jQuery(this).val();             // no date selected: deselect listbox and quitt             if('' === value) {                 console.log('no date selected');                 jQuery(`#field${selectFieldID} option`).prop('selected', false);                 jQuery(`#field${selectFieldID}`).trigger("change");                 return;             }             // date selected: verify the age             let verify  = 18;             let reached = minage(value, null, {minage : verify});             console.log(value + ` - reached ${verify}: ` + reached);             if(reached) {                 jQuery(`#field${selectFieldID}`).val(1);             }             else {                 jQuery(`#field${selectFieldID}`).val(0);             }             jQuery(`#field${selectFieldID}`).trigger("change");         });     }); }); function minage(value, element, options) {     let check = false, minage = "", age = "", format, i = 0, fmt = {}, valueParts, years, now = new Date();     // a date is selected     if (value) {         // no minage set         if (options.minage) {             minage = options.minage;         } else {             return true;         }         // get year, month and day from selected date         // with regards to the currently used format         format = (value.indexOf(".") > -1) ? "dd.mm.yyyy" : ((value.indexOf("/") > -1) ? "mm/dd/yyyy" : "yyyy-mm-dd");         format.replace(/(yyyy|dd|mm)/g, function (part) {             fmt[part] = i++;         });         valueParts = value.match(/(\d+)/g);         value = new Date(valueParts[fmt["yyyy"]], valueParts[fmt["mm"]] - 1, valueParts[fmt["dd"]], 0, 0, 0, 0);         // get the difference between the year of now and the selected date         years = now.getFullYear() - value.getFullYear();         // set year in selected date to current year         value.setFullYear(value.getFullYear() + years);         // if the selected date is then in the future, subtract 1 from years, because the last year is not yet completed         if (value > now) {             years--;         }         check = years >= minage;         return check;     } }


Die Funktion 'minage' ist eine direkte Kopie aus dem Visforms-Code zur Validierung.
Enthalten ab dem nächsten Release Visforms 5.1.0.

Der obige JavaScript-Code
- versteckt die Listbox 'listbox-age'
- steuert die Listbox 'listbox-age' entsprechend der Angabe des Datums in Feld 'birth-date'

Anpassung an dein Formular.

const dateFieldID   = '640'; --> Hier die Feld ID für dein Datums-Feld eintragen.
const selectFieldID = '641'; --> Hier die Feld ID für dein Listbox-Feld eintragen.
let verify  = 18; --> Hier das Mindest-Alter festlegen (für den Fall Jugendlicher/Erwachsener ist keine Änderung notwendig).

Erweiterungen an deinem Formular.

Analog zu den Feldern 'text-minor' und 'text-adult' kannst du weitere Felder zu 'Bedingten Feldern' machen.
Damit folgen auch alle weiteren bedingten Felder der Anzeige-Logik entsprechend des gewählten Geburtsdatums.

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: 5 Tage 21 Stunden her von Administrator IV.

Moderatoren: Administrator AVAdministrator IV
Powered by Kunena Forum