formbasedocs
Naar de appApp

Formulieren bouwen

Conditionele logica

Logicablokken reageren op wat een respondent invoert — toon of verberg elk blok, spring naar pagina’s, blokkeer verzending of bereken waarden. Combineer eenvoudige regels tot geavanceerde vertakking zonder code.


Wat logica kan doen

Elk logicablok heeft een of meer regels. Elke regel koppelt een conditiegroep (wanneer moet dit activeren?) aan een of meer acties (wat moet er gebeuren?). Er zijn negen actietypen beschikbaar:

ActieWat het doet
ToonMaak een verborgen blok — een vraag, alinea, afbeelding of optie — zichtbaar wanneer condities overeenkomen.
VerbergVerberg een zichtbaar blok — een vraag, alinea, afbeelding of optie — wanneer condities overeenkomen.
Maak verplichtMaak een veld dynamisch verplicht voor bepaalde paden.
Maak optioneelVersoepel de validatie van een verplicht veld wanneer condities overeenkomen.
Stel volgende pagina inSla over naar een specifieke pagina — zo bouw je vertakking
Bereken waardeBereken totalen, scores of prijzen op basis van andere antwoorden.
Stel betalingsbedrag inStel de prijs van een Payment-veld in, of verhoog of verlaag deze op basis van antwoorden.
Voorkom navigatie naar volgende paginaVerhinder dat de respondent verder gaat, met een optioneel bericht dat uitlegt waarom.
Voorkom verzending van formulierVerhinder verzending totdat aan condities is voldaan (bijv. voorwaarden geaccepteerd), met een optioneel bericht dat uitlegt waarom.

Een logicablok toevoegen

Een logicablok is een documentelement — het staat op het canvas tussen vragen, net als een kop of een afbeelding. Je kunt het overal plaatsen: tussen twee velden op dezelfde pagina, bovenaan een pagina of vlak voor een pagina-einde.

  1. 1

    Open het schuinstreepjesmenu

    Klik op een lege regel op het canvas en typ /. De blokkenkeuzelijst verschijnt.

  2. 2

    Zoek naar "Logic"

    Typ logic om te filteren. Kies Logic uit de categorie Lay-out. Er verschijnt een nieuw logicablok bij de cursor.

  3. 3

    Voeg een regel toe

    Het blok toont Wanneer … Doe …. Elke regel heeft één conditiegroep en een of meer acties.

  4. 4

    Definieer condities

    Kies een veld, kies een operator en stel een waarde in. Voeg nog een conditie toe, of voeg een set voorwaarden toe om één niveau dieper te nesten.

  5. 5

    Kies acties

    Kies een actietype (Toon, Verberg, Maak verplicht, Stel volgende pagina in, enz.) en kies het doel — een vraag, een blok, een optie of een pagina.

  6. 6

    Voeg meer regels toe (optioneel)

    Een enkel logicablok kan meerdere regels bevatten. Elke regel is onafhankelijk: eigen condities, eigen acties.

Condities

Condities zijn de kant Wanneer van een regel. Elke conditie kiest een veld, past een operator toe en vergelijkt vaak met een waarde. De veldkiezer groepeert wat je kunt observeren: Vragen, Verborgen velden, Berekende velden en Metadata (op dit moment de taal van de respondent).

Alle of Elk

Zodra een regel twee of meer condities heeft, verschijnt er een schakelaar boven aan de sectie Wanneer:

  • Alle — elke conditie moet waar zijn voordat de regel activeert. De rijen lezen als “en”.

  • Elk — één ware conditie is genoeg. De rijen lezen als “of”.

Sets van condities

Voeg een set voorwaarden toe nest een tweede groep binnen de eerste, één niveau diep, met zijn eigen Alle/Elk-schakelaar. Dat dekt samengestelde logica zoals “abonnement is Pro en (land is Noorwegen of land is Zweden)”. Een set bevat alleen condities — hij kan geen andere set bevatten.

Houd het leesbaar

Als een enkel logicablok te complex aanvoelt, overweeg dan de logica te verdelen over meerdere logicablokken of de pagina’s van je formulier opnieuw in te delen.

Operatorenoverzicht

De lijst met operators wordt bepaald door het veld dat je hebt gekozen — je ziet altijd alleen de operators die dat veld ondersteunt. Hieronder benoemt elke kop de exacte set.

Tekst (Tekstinvoer, Tekstgebied en tekst-berekende velden)

OperatorOmschrijving
isWaarde komt overeen, ongeacht hoofdletters en spaties aan het begin of eind
is notWaarde komt niet overeen
containsWaarde bevat de opgegeven tekst
does not containWaarde bevat de opgegeven tekst niet
starts withWaarde begint met de opgegeven tekst
ends withWaarde eindigt met de opgegeven tekst
is emptyVeld heeft geen waarde
is not emptyVeld heeft een waarde

Elke tekstvergelijking negeert hoofdletters en spaties aan het begin en eind, dus x@Competitor.com eindigt op @competitor.com.

De overige tekstachtige velden bieden een beperktere set, dus kies het type dat past bij hoe je wilt vergelijken:

VeldOperators die het biedt
E-mailcontains, does not contain, is, ends with, is empty, is not empty
Website-URLcontains, does not contain, is, starts with, ends with, is empty, is not empty
Telefoonnummeris, starts with, contains, is empty, is not empty
Verborgen veld (tekst)De volledige tekstset hierboven

Numeriek (Getal, Sterrenrating, lineaire schaal, numerieke verborgen en berekende velden)

OperatorOmschrijving
isWaarde komt exact overeen
is notWaarde komt niet overeen
is greater thanWaarde is hoger dan het opgegeven getal
is less thanWaarde is lager dan het opgegeven getal
is greater than or equal toWaarde is gelijk aan of hoger dan het opgegeven getal
is less than or equal toWaarde is gelijk aan of lager dan het opgegeven getal
is betweenWaarde valt binnen een bereik (inclusief)
is emptyVeld heeft geen waarde
is not emptyVeld heeft een waarde

Selectievakjes en afbeeldingskeuze

OperatorOmschrijving
has checked any ofMinimaal één van de opgegeven opties is aangevinkt
has not checked any ofGeen van de opgegeven opties is aangevinkt
has checked all ofElke opgegeven optie is aangevinkt
has checked exactlyAangevinkte opties komen exact overeen met de opgegeven set
is emptyGeen opties geselecteerd
is not emptyMinimaal één optie geselecteerd
OperatorOmschrijving
isGeselecteerde optie komt exact overeen
is notGeselecteerde optie komt niet overeen
is emptyNiets geselecteerd
is not emptyEen optie is geselecteerd

Schakelaar (en boolean-berekende velden)

OperatorOmschrijving
is onDe schakelaar staat aan
is offDe schakelaar staat uit

Handtekening

OperatorOmschrijving
is signedEr is een handtekening geplaatst
is not signedEr is geen handtekening geplaatst

Bestandsupload

OperatorOmschrijving
has fileMinimaal één bestand is geüpload
has no fileGeen bestand geüpload

Datumkiezer en Tijdkiezer

OperatorOmschrijving
isExacte overeenkomst
is notKomt niet overeen
is beforeVoor de opgegeven datum/tijd
is afterNa de opgegeven datum/tijd
is betweenValt binnen een datum/tijdbereik
is emptyGeen waarde geselecteerd
is not emptyHeeft een waarde

Rangschikking

OperatorOmschrijving
option is ranked firstDe opgegeven optie staat op de eerste positie
option is ranked lastDe opgegeven optie staat op de laatste positie
option is ranked aboveDe opgegeven optie staat hoger dan een andere optie

Matrix / Raster

OperatorOmschrijving
row answer isEen specifieke rij heeft het opgegeven antwoord
row answer is notEen specifieke rij heeft het opgegeven antwoord niet
row is answeredEen specifieke rij is beantwoord
row is not answeredEen specifieke rij is niet beantwoord

Betaling

OperatorOmschrijving
amount equalsHet betalingsbedrag komt exact overeen
amount is greater thanHet betalingsbedrag is hoger dan de opgegeven waarde
amount is less thanHet betalingsbedrag is lager dan de opgegeven waarde
is completedBetaling is succesvol verwerkt
is not completedBetaling is nog niet verwerkt

Velden die je niet kunt observeren

Schedule appointment en Documents kunnen doel zijn van een zichtbaarheidsactie, maar nooit bron van een conditie. Een boeking wordt aan de inzending gekoppeld in plaats van opgeslagen als een gewoon antwoord, en een Documents-blok verzamelt helemaal geen antwoord. Gebruik eerdere kwalificatieantwoorden om een van beide te tonen of te verbergen. Elke zichtbare Schedule appointment-vraag moet geboekt zijn vóór de inzending; een verborgen vraag blokkeert dit niet. Zie Cal.com-planning met logica.

Doelkeuze

Elke actie heeft een doel nodig — het element waarop het van toepassing is. Het doel hangt af van het actietype:

ActietypeDoelVoorbeeld
Toon / VerbergElk blok — een vraag, alinea, afbeelding, lay-outcontainer of een specifieke optie in een keuzeveldToon een "Goede keuze!"-alinea wanneer een optie wordt gekozen
Maak verplicht / Maak optioneelEen vraagVereis "Dieetwensen" alleen voor aanwezigen ter plaatse
Stel volgende pagina inEen paginaSla over naar pagina 5 voor terugkerende klanten
Bereken waardeEen berekend veldTel drie sterrenratingscores op tot een totaal
Stel betalingsbedrag inEen Payment-veldVerhoog de prijs met 15 wanneer "Snelle levering" aan staat
Voorkom navigatie naar volgende pagina / Voorkom verzending van formulierGeen doel nodig (alleen het bericht)Verhinder verzending totdat de schakelaar voor voorwaarden aan staat

Toon en Verberg reiken verder dan vragen. Richt je op elk blok op het canvas — een alinea, kop, afbeelding of lay-outcontainer — om een notitie te tonen die standaard verborgen was, of om inhoud te verbergen zodra die niet langer relevant is. Ze kunnen ook afzonderlijke opties in een keuzeveld als doel hebben, niet alleen de hele vraag. Verberg eerst een blok via het blokmenu en schrijf vervolgens een regel om het te tonen.

Hoe meerdere regels worden gecombineerd

Elke regel staat op zichzelf, en ze worden allemaal samen geëvalueerd. Regels worden van boven naar beneden gelezen, over logicablokken heen, in documentvolgorde. Hoe meerdere regels op hetzelfde doel worden gecombineerd, hangt af van de actie.

ActieHoe meerdere regels combineren
Toon / Verberg, Maak verplicht / Maak optioneelAlleen een regel waarvan de condities overeenkomen, claimt het doel, dus regels stapelen als een of: het blok wordt getoond als een overeenkomende regel het toont. Een regel die niet overeenkomt, past het tegenovergestelde toe maar claimt niets, dus een latere overeenkomende regel wint alsnog.
Stel volgende pagina inEen sprong werkt wanneer de respondent op de pagina met de vragen die de regel leest op Volgende klikt, en op geen enkele andere pagina. Van de regels die daar werken, wint de eerst overeenkomende. Een regel die alleen verborgen of berekende velden leest, werkt op elke pagina, maar springt alleen vooruit.
Bereken waardeElke overeenkomende regel wordt uitgevoerd, in volgorde, op de lopende waarde. Niets claimt iets.
Stel betalingsbedrag inAlleen een regel "instellen op" waarvan de condities overeenkomen, claimt de prijs, dus de eerste overeenkomende regel is eigenaar en meerdere regels "instellen op" kunnen elk een prijsniveau instellen. "Verhogen met" en "Verlagen met" claimen nooit — ze stapelen in volgorde op het lopende bedrag.
Geen regel komt overeenHet blok keert terug naar zijn standaard — verborgen als het standaard verborgen was, anders zichtbaar.

Zo kun je meerdere regels op hetzelfde blok richten zonder dat ze elkaar tegenwerken. Een feedbackformulier heeft een Keuzerondjes-vraag — “Waar kunnen we je mee helpen?” — met vier opties, en een e-mailveld “Mogen we contact met je opnemen?” dat standaard verborgen is. Vier regels tonen elk datzelfde e-mailveld (plus hun eigen vervolgvraag) voor hun optie. Het e-mailveld verschijnt ongeacht welke optie wordt gekozen, en blijft alleen verborgen als geen enkele optie overeenkomt.

Vaak volstaat een enkele regel

Om een blok zichtbaar te maken voor meerdere antwoorden is één regel met Elk en een conditie per antwoord — of één enkele is not empty-conditie die ze allemaal dekt — makkelijker te lezen dan vier regels. Grijp naar meerdere regels wanneer elke optie ook een eigen, aparte vervolgvraag nodig heeft.

Conflicterende regels

Wanneer twee regels het oneens zijn over hetzelfde doel — de ene Toont een blok terwijl de andere het Verbergt, of de ene maakt een veld verplicht terwijl de andere het optioneel maakt — en beide condities tegelijk overeenkomen, wint de eerste regel. De latere, verliezende regel wordt in de editor gemarkeerd: “Deze actie is nooit van toepassing — een eerdere regel bepaalt dit doel al. De volgorde van de regels beslist: de eerste regel wint.”

Eén uitzondering op de volgorde: een regel waarvan de conditie een berekend veld leest, wordt uitgevoerd na de regel die het schrijft, ongeacht de documentvolgorde, zodat een score altijd berekend is voordat er iets op vertakt. Regels die elkaars berekende velden in een lus schrijven, geven een publicatiewaarschuwing die de keten benoemt — doorbreek de lus zodat waarden voorspelbaar worden opgelost.

Verborgen wint van verplicht

Een vraag die uiteindelijk verborgen is, is nooit verplicht — of hij nu door een regel verborgen werd of via het blokmenu verborgen is zonder regel om hem weer te tonen. Het sterretje verdwijnt en de inzending wordt niet geblokkeerd — anders zou een respondent vastzitten in een formulier door een veld dat hij niet kan zien.

Veelgebruikte patronen

Toon een vervolgvraag op basis van een eerder antwoord

Een tevredenheidsonderzoek vraagt “Hoe beoordeel je je ervaring?” met een 1-5 sterrenrating. Een logicablok eronder gebruikt de conditie “rating is less than or equal to 3” met de actie Toon, gericht op een tekstgebiedveld dat vraagt “Wat kunnen we verbeteren?” Respondenten die 4 of 5 geven, zien de vervolgvraag nooit.

Toon een bericht wanneer een optie wordt gekozen

Een aanmeldformulier heeft een keuzerondje-vraag: “Welk abonnement past het best bij jou?” Eronder staat een alinea — “Goede keuze! Ons Pro-abonnement bevat prioritaire ondersteuning.” — die standaard verborgen is met Verberg uit het blokmenu. Een logicablok maakt hem zichtbaar: als abonnement is “Pro”, Toon de alinea. De aanmoedigende notitie verschijnt alleen voor wie Pro kiest en blijft voor alle anderen verborgen.

Vertakking naar verschillende pagina’s op basis van een selectie

Een evenementregistratieformulier heeft een keuzerondje-vraag: “Bent u aanwezig ter plaatse of op afstand?” Twee logicablokken volgen:

  • Regel 1 — conditie: aanwezigheid is “Ter plaatse”, actie: Stel volgende pagina in “Locatiedetails”.

  • Regel 2 — conditie: aanwezigheid is “Op afstand”, actie: Stel volgende pagina in “Streaming-instellingen”.

  • Regel 3 — conditie: aankomsttijd is not empty, actie: Stel volgende pagina in “Bevestiging”. Aankomsttijd is een verplichte vraag op “Locatiedetails”.

Regel 1 en 2 lezen de vraag aanwezigheid, dus ze werken wanneer de respondent de pagina ervan verlaat. Daarna gaat Volgende in paginavolgorde verder. Regel 3 leest een vraag op “Locatiedetails”, dus die werkt wanneer de respondent die pagina verlaat. Wie ter plaatse aanwezig is, slaat dan “Streaming-instellingen” over. Elk pad verzamelt alleen relevante informatie, waarna beide paden samenkomen op een gedeelde “Bevestiging”-pagina.

Bereken een score en vertak daarop

Een leadkwalificatieformulier heeft drie sterrenratingvragen: budget, tijdlijn en bevoegdheid. Een berekend veld met de naam “Leadscore” gebruikt een logicablok met de actie Bereken waarde om de waarde van elke rating op te tellen. Een tweede logicablok leest het berekende veld: als Leadscore is greater than 12, Stel volgende pagina in “Prioritaire opvolging”; anders spring naar de standaard bevestigingspagina.

Reageer op een verborgen veldwaarde

De URL vult een verborgen veld met de naam plan (bijv. ?plan=enterprise). Een logicablok controleert: als plan is “enterprise”, Toon de vraag “Toegewijde accountmanager” en Maak verplicht het veld “Bedrijfsgrootte”. Respondenten op het gratis abonnement zien deze vragen nooit.

Blokkeer verzending op basis van een berekend totaal

Een bestelformulier berekent een lopend totaal. Een logicablok gebruikt de conditie: als Ordertotaal is less than 10, Voorkom verzending van formulier. De respondent kan niet verzenden totdat aan de minimale besteldrempel is voldaan.

Terwijl een preventieregel actief is, wordt de knop als niet-beschikbaar weergegeven en krijgt de respondent te horen waarom. Typ de reden in Bericht dat aan de respondent wordt getoond op de actierij — “Je bestelling moet minstens 10 bedragen” — zodat ze weten welk antwoord ze moeten aanpassen. Laat het leeg en het formulier valt terug op “Dit formulier kan niet worden verzonden met de huidige antwoorden.” (of “U kunt niet doorgaan naar de volgende pagina met de huidige antwoorden.” voor een navigatieblok). Wanneer meerdere preventieregels tegelijk afgaan, bepaalt de eerste regel met een bericht de tekst.

Test logica met Voorbeeld

Nadat je je regels hebt ingesteld, schakel je over naar Voorbeeld in de bovenste werkbalk en vul je het formulier in zoals een respondent dat zou doen. Logica wordt in realtime geactiveerd in Voorbeeld, zodat je elke vertakking, elk verborgen veld en elke validatieblokkering kunt controleren voordat je publiceert.

Volgende stappen