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?

Datumfeld

More
3 weeks 22 hours ago #10810 by rolaloe
Datumfeld was created by 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

More
3 weeks 4 hours ago - 3 weeks 4 hours ago #10812 by Administrator IV
Replied by Administrator IV on topic 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 :-).
Last edit: 3 weeks 4 hours ago by Administrator IV.

More
3 weeks 3 hours ago #10814 by rolaloe
Replied by rolaloe on topic 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?
 

More
3 weeks 40 minutes ago #10818 by Administrator IV
Replied by Administrator IV on topic 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 :-).

More
2 weeks 5 days ago #10822 by rolaloe
Replied by rolaloe on topic 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

More
2 weeks 1 day ago - 5 days 1 hour ago #10836 by Administrator IV
Replied by Administrator IV on topic 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 der Visforms Version 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 :-).
Last edit: 5 days 1 hour ago by Administrator IV.

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum