Skip to main content
Skip table of contents

Formulier expressies syntax

Toelichting vooraf

Formulier expressies worden geschreven in JavaScript. Hierover is algemeen heel wat informatie beschikbaar via boeken en het internet. Onderstaand beknopt overzicht geeft je alvast wat basisinformatie. Bij het opbouwen van expressies kan je ook een beroep doen op een AI-assistent. Check zeker ook de pagina formulier expressies voorbeelden voor enkele toegepaste use cases.

Data types

Volgende data types zijn ondersteund binnen de expressies.

Data type

Voorbeeld waarde

Leeg

undefined

String

'Hello World!'

Boolean

true or false

Getal

99 (integer) of 1,31 (float)

Datum tijd

2022-09-27 18:00:00 (ISO 8601 notatie)

Data structuur

De data kan in volgende structuren zitten.

Data structuur

Voorbeeld opbouw

Enkelvoudige waarde

‘Hello world!’

Lijst

[0,1,2,3] of ['appels','peren','bananen']

Map (dictionary)

{“naam”:”Janssen”,”voornaam”:”paul”,”leeftijd”:”50”,”hobbies”:['vissen','lezen','gamen']}

Waardes ophalen

Bij het ophalen van waardes moet je goed opletten vanuit welke scope je dit wil doen.

Proces scope

Waardes uit een procesvariabele of lokale taakvariabele

Waardes uit een procesvariabele of lokale (taak)variabele kan je niet rechtstreeks aanspreken. Hier moet je een omweg maken en eerst de variabele via een setField functie in een (eventueel verborgen) formulierveld wegschreven. Pas daarna kan je met die informatie beginnen werken binnen de context van een formulierexpressie.

Formulier scope

Waardes uit actueel geopend formulier

Waardes uit het actuele formulier kunnen opgehaald worden via $.keyVeld. Opgelet: als je werkt met een formulierveld behorend tot een veldengroep, gebruik je $.keyGroep.keyVeld.

Voorbeeld expressie: $.keyVeld === 'Hello world!' retourneert true als de veldwaarde exact matcht met de opgegeven string.

Waardes uit een logica veld (computed expression of formuliervariabele)

Waardes uit een formuliervariabele (computed expression of berekend veld) kunnen opgehaald worden via $$.computedExpressions.keyComputedExpression

Voorbeeld expressie: $$.computedExpressions.keyComputedExpression !== undefined retourneert true als de computed expression ingevuld is.

Waardes uit context formulier

Velden uit een gelinkt formulier kunnen opgehaald worden via context.keyFormulier.keyVeld

Voorbeeld expressie: context.keyFormulier.keyVeld > 99 retourneert true als de veldwaarde groter is dan het opgegeven getal.

Specifieke waardes uit een lijst subveld

Een lijst is een collectie van items of elementen die bestaan uit een aantal subvelden. Als je de waarde van een specifiek subveld wil ophalen, kan je dit doen via $.keyLijst[x].keySubveld waarbij x de index is van het item of element in de lijst. Bijvoorbeeld $.keyLijst[0].keySubveld is de waarde van het subveld voor het eerste item in de lijst, $.keyLijst[1].keySubveld is de waarde van het subveld voor het tweede item in de lijst. In de praktijk zal je dit als configurator niet doen (hoewel er use cases zijn, zie formulier expressie voorbeelden), omdat je op voorhand niet weet hoeveel en welke items een gebruiker zal ingeven.

Lijst scope

Dynamisch waardes uit een lijst subveld

Je kan waardes uit lijst subvelden dynamisch ophalen en gebruiken in expressies. Met dynamisch bedoelen we dat de waarde telkens wisselt per item in de lijst. Bijvoorbeeld een gebruiker geeft voor elk lijstitem een bedrag in, en onmiddellijk wil je dit bedrag omzetten van euro naar dollar. Je kan dan het bedrag dan ophalen via $.keySubveld en in een expressie gaan omrekenen. Het resultaat laat je dan automatisch verschijnen in een ander subveld via de ComputedWith eigenschap.

Opgelet: afhankelijk van de use case moet je de expressie waarin je dergelijke waardes gebruikt, definiëren op formulier niveau (bijvoorbeeld wanneer je de reduce() functie gebruikt), dan wel op lijst niveau. Voor meer info en uitgewerkte voorbeelden zie de pagina formulier expressies voorbeelden.

Formulierveld scope

Waardes uit actueel geopend formulierveld (validatieregels)

Tijdens het opstellen van een validatieregel binnen een formulierveld zelf kan je de waarde van het formulier ophalen via $. Dit kan een regulier formulierveld zijn, een lijst subveld of een veld binnen een veldengroep. Let op: de scope van de validatieregel (expressie) is het veld zelf. Je kan niet verwijzen naar andere velden of naar computed expressies.

Voorbeeld expressie: $ !== undefined retourneert true als de waarde ingevuld is.

Operatoren

Booleaanse operatoren

Operator

Beschrijving

Data types

&&

Verbindt twee booleaanse waardes. Indien de twee waardes true zijn, dan retourneert de expressie true. Vanaf het ogenblik dat één van beide waardes (of allebei) false is, dan retourneert de expressie false.

Boolean

||

Verbindt twee booleaanse waardes. Vanaf het ogenblik dat één van beide waardes (of allebei) true is, dan retourneert de expressie true. Indien beide waardes false zijn, dan retourneert de expressie false.

Boolean

!

Als de hieropvolgende waarde false is, wordt true geretourneerd.

Boolean

Numerische operatoren

Operator

Beschrijving

Data types

+

Som van twee getalwaardes.

Number

-

Verschil van twee getalwaardes.

Number

/

Quotiënt van twee getalwaardes.

Number

*

Product van twee getalwaardes.

Number

Vergelijkende operatoren

Operator

Beschrijving

Data types

===

Vergelijk twee waardes met elkaar. Indien identiek, retourneert de expressie true. Indien niet, retourneert de expressie false. De vergeleken waardes moeten van hetzelfde data type zijn.

String, boolean, number, date

!==

Vergelijk twee waardes met elkaar. Indien identiek, retourneert de expressie false. Indien niet, retourneert de expressie true. De vergeleken waardes moeten van hetzelfde data type zijn.

String, boolean, number, date

<

Vergelijkt twee waardes met elkaar. Indien waarde A kleiner dan waarde B, retourneert de expressie true. Indien waarde A gelijk of groter dan waarde B, retourneert de expressie false. De vergeleken waardes moeten van hetzelfde data type zijn.

Number, date

>

Vergelijkt twee waardes met elkaar. Indien waarde A groter dan waarde B, retourneert de expressie true. Indien waarde A gelijk of kleiner dan waarde B, retourneert de expressie false. De vergeleken waardes moeten van hetzelfde data type zijn.

Number, date

<=

Vergelijkt twee waardes met elkaar. Indien waarde A kleiner of gelijk aan waarde B, retourneert de expressie true. Indien waarde A groter dan waarde B, retourneert de expressie false. De vergeleken waardes moeten van hetzelfde data type zijn.

Number, date

>=

Vergelijkt twee waardes met elkaar. Indien waarde A groter of gelijk aan waarde B, retourneert de expressie true. Indien waarde A kleiner dan waarde B, retourneert de expressie false. De vergeleken waardes moeten van hetzelfde data type zijn.

Number, date

If - then - else statements

Het is mogelijk om je expressie te verrijken aan de hand van een “If - then -else” statement.

Voorbeeld 1

$.naamVeld === true ? ‘Juist’ : ‘Fout’

Indien de waarde in het ja/nee-veld true is, dan geeft de expressie de string ‘Juist’, anders de string ‘Fout’.

Voorbeeld 2

$ !== undefined? $ >= 0 && $ < 5 : true

Voorbeeld van een validatieregel voor een getal veld. De expressie checkt indien het veld ingevuld is. Indien nee, dan retourneert de expressie true en wordt geen foutboodschap getoond. Indien ja, dan volgt er een check of het getal tussen 0 en 5 ligt. Indien ja, dan retourneert de expressie true en wordt geen foutboodschap getoond. Indien nee, dan retourneert de expressie false en wordt de foutboodschap gevisualiseerd.

Voorbeeld 3

Functies

Onderstaande is een slechts greep uit enkele veelgebruikte JavaScript functies.

Datumtijd functies

Onderstaande is enkel toepasbaar op waardes die geformatteerd zijn als ISO-datumtijd. moment(), moment('2025-01-06'), moment($.keyVeld) of moment($). Datum expressies zijn courant binnen de context van formulierveld validaties.

Functie

Uitleg

Voorbeeld

moment($.keyVeld)

Een Skryv datumveld bevat een string-waarde. Via moment kan je die omzetten naar een ISO ‘datum tijd’-waarde waarmee je kan rekenen.

-

moment('2025-01-01')

Een vaste datum waarde definiëren.

-

moment()

Dit retourneert de actuele ‘datum tijd’-waarde in ISO formaat.

-

.date() .year(), .quarter(), .month(), .day(), .hour(), .minute(), .second()

Retourneert enkel een specifieke component uit een datum tijd waarde.

  • $ !== undefined ? moment($).year() === 2024 : true valideert of de datum in het jaar 2024 valt.

  • $ !== undefined ? moment($).quarter() === 4 : true valideert of de datum in het vierde kwartaal valt.

.year(2026), .month(01), .day(06), .hour(16), .minute(15), .second(03)

Vult een specifieke component in binnen een datum tijd waarde.

$ !== undefined ? moment($).hour(23).minute(59).second(59) >= moment() : true valideert of de ingevoerde datum niet in het verleden ligt. We voegen 23 uren, 59 minuten en 59 seconden toe aan de ingevoerde datum, om er zeker van te zijn dat ook de actuele datum aanvaard wordt.

.add(x,'days')

Telt tijd op. Eerste parameter is de hoeveelheid (bv. 2); tweede parameter is de eenheid (zoals ‘days’, maar kan ook ‘years', ‘months’, ‘days’, ‘hours’, minutes’, ‘seconds' of 'milliseconds’ zijn).

$ !== undefined ? moment().add(5,'days') > moment($) : true valideert of de ingevoerde datum niet verder ligt dan 5 dagen in de toekomst.

.subtract(x,'months')

Trekt tijd af. Eerste parameter is de hoeveelheid (bv. 2); tweede parameter is de eenheid (zoals ‘days’, maar kan ook ‘years', ‘months’, ‘days’, ‘hours’, minutes’, ‘seconds' of 'milliseconds’ zijn).

$ !== undefined ? moment() > moment($).subtract(5,'days') : true valideert of de ingevoerde datum niet verder ligt dan 5 dagen in de toekomst.

Getal functies

Onderstaande is enkel toepasbaar op waardes die geformatteerd zijn als getal (integer, float, enzovoort).

Functie

Uitleg

Voorbeeld

parseInt(waarde,radix)

Zet een string om naar een integer. Het eerste argument is de waarde die je wil omzetten. Het tweede argument is de radix. Vul 10 in als je wil dat de waarde geïnterpreteerd wordt als een decimaal getal.

parseInt($.newFieldsetD3Bfbh.zipcode, 10) Zet de postcode om in een integer zodat je die kan gaan aftoetsen tegen een ander getal.

Math.round()

Afronden naar het dichtsbijzijnde geheel getal.

Math.round(4,35545) retourneert 4

Math.round(4,51111) retourneert 5

Number(waarde.toFixed())

Omzetten naar een number en afronden tot op een gespecificeerd aantal getallen na de komma.

Number($.mijnGetal.toFixed(2)) retourneert 5,11 als de ingevulde waarde 5,113450 is.

parseFloat(waarde)

parseFloat((waarde).toFixed(x))

Zet een string om naar een float. Aangezien een float potentieel een groot aantal cijfers na de komma heeft, kan je dit aanvullen met de method .toFixed(x) waarbij x het maximum aantal karakters na de komma representeert.

parseFloat((9,9934).toFixed(2)) retourneert 9,99

String functies

Onderstaande is enkel toepasbaar op waardes die geformatteerd zijn als string.

Functie

Uitleg

Voorbeeld

.length

Retourneert het aantal karakters in de string.

  • $ !== undefined? $.length <= 100 : true valideert of het aantal karakters in een tekstveld hoger ligt dan 100.

  • $ !== undefined? $.text.length <= 100 : true valideert of het aantal karakters in een tekstvak veld hoger ligt dan 100.

.concat()

Via deze functie kan je verschillende waardes in een string concateneren.

"($.naam ? $.naam : '').concat(' ').concat($.voornaam ? $.voornaam : '')" stelt je in staat om twee tekstvelden te concateneren. De resulterende formuliervariabele gebruik je vervolgens om een derde tekstveld (bijvoorbeeld ‘Volledige naam’) in te vullen.

.substring()

Haalt een stuk van de string op tussen twee indices.

$.antwoord.substring(0,6) zal ‘Cercle’ retourneren indien de input string ‘Cercle Brugge’ is.

.includes()

Controleert of een bepaalde substring aanwezig is in de string.

$.antwoord.includes('Cercle') zal true retourneren indien de input string ‘Cercle Brugge’ is en false indien de input string ‘Club Brugge’ is.

.replace()

Vervangt een deel van de string door een andere string.

$.antwoord.replace('Club', ‘Cercle') zal bijvoorbeeld resulteren in ‘Cercle Brugge’ wanneer de input string 'Club Brugge’ is.

Lijst functies

Onderstaande is enkel toepasbaar op lijsten.

Functie

Uitleg

Voorbeeld

.length

Retourneert het aantal items in de lijst.

  • $.keyList.length geeft een getal (integer) terug. Dit is het aantal items dat zich in de lijst bevindt.

  • $.keyList.length > 5 ? 'De gebruiker heeft meer dan 5 items opgegeven' : 'De gebruiker heeft minder dan 5 items opgegeven' : voorbeeld van een expressie die één van beide strings retourneert in functie van het aantal items in de lijst.

$$.path

$$.path[0]

Retourneert het pad naar het geselecteerde veld (d.w.z. de veld scope vanwaaruit de expressie geschreven is) als een lijst.

Door de index parameter toe te voegen kan je een specifiek element binnen het pad selecteren. In de praktijk wordt dit gebruikt om de index eigenschap van een lijstitem op te halen.

$$.path[1]+1 retourneert het volgnummer van het specifieke item binnen een lijst (op voorwaarde dat het lijstveld op het hoogste niveau binnen het formulier zit). Zie formulier expressies voorbeelden voor een uitgewerkte case.

.reduce()

Doorloopt elk item van de lijst en voert telkens (iteratief) een bewerking uit met de waarde in een specifiek subveld.

Klik door naar formulier expressies voorbeelden voor een uitgewerkt voorbeeld.

$.keyList.reduce((acc,element) => acc + element.keySubveld, 0)

Uitleg:

  • acc: de accumulator, d.w.z. de outputwaarde die doorheen de functie wordt opgebouwd.

  • element: de inputwaarde voor de functie, deze neemt telkens de waarde aan van het subveld voor elk lijstitem dat doorlopen wordt.

  • => pijlfunctie (javascript)

  • bewerking: acc + element.keySubveld dit betekent dat voor ieder lijstitem de waarde van het subveld bij de accumulator opgeteld wordt.

  • beginwaarde: de beginwaarde van de accumulator is in dit voorbeeld '0'

.some()

Doorloopt elk item van de lijst om te kijken of er minstens één van de items aan de opgegeven check voldoet. Indien ja, dan wordt true geretourneerd, indien nee false.

$.onkost.some(function(x) {return x.btwStelsel.selectedOption === 'btw6Procent'}) ? true : false

Zie formulier expressies voorbeelden voor een uitgewerkte use case.

.every()

Doorloopt elk item van de lijst om te kijken of alle items aan de opgegeven check voldoen. Indien ja, dan wordt true geretourneerd, indien nee false.

$.onkost.every(function(x) {return x.btwStelsel.selectedOption === 'btw6Procent'}) ? true : false

Zie formulier expressies voorbeelden voor een uitgewerkte use case.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.