Använd regler för att lägga till dynamiskt beteende i formulär
En av de kraftfulla funktionerna för att skapa formulär med hjälp av ett kalkylblad är möjligheten att använda inbyggda kalkylbladsfunktioner för att skapa regler, vilket gör det möjligt att villkorligt visa eller dölja formulärfält, automatisera beräkningar baserat på användarens indata och skapa en mer dynamisk användarupplevelse.
I den här artikeln beskrivs hur du använder olika egenskaper för adaptiva formulärblock, huvudsakligen Visible, Visibility Expression och Value Expression tillsammans med -kalkylbladsfunktioner , för att skapa effektiva regler för dina formulär. Vi ska också titta på några exempel som visar hur dessa regler kan implementeras i praktiken.
Om en linjes konstruktion
Regler är som instruktioner som talar om för oss vad vi ska göra i olika situationer. En regel har vanligtvis följande konstruktion:
-
Villkor: Dessa anger under vilka omständigheter regeln gäller. Se dem som en fråga som behöver besvaras (ja eller nej).
-
Åtgärder: Dessa definierar vad som händer när villkoret är uppfyllt (true) eller inte är uppfyllt (false).
Om du till exempel vill visa en e-postruta när en kryssruta är markerad:
- Villkor: "Tycker du om att prenumerera på tidskrifter och aktiviteter?" är markerad. (Ja eller nej?). Det här villkoret anges i formulärets
Visible-egenskap. - Åtgärd (True): E-postrutan visas. (Vad händer om ja).
Visibility Expressionanvänder villkoret som definierats för egenskapenvisibleför att dynamiskt visa fält. - Åtgärd (Falskt): E-postrutan är dold. (Vad händer om nej).
Visibility Expressionanvänder villkoret som definierats förValueför att dynamiskt dölja fält.
Detaljerade steg-för-steg-instruktioner finns i fältet för att visa/dölja e-post baserat på ett villkor
Förstå egenskaperna för värde, synlighet, synlighetsuttryck och värdeuttryck
Synlig egenskap
Tänk dig en ljusbrytare för formulärfältet. Egenskapen Visible är som den växeln och styr om fältet är synligt från början i formuläret när det läses in första gången.
- Sant (som ljusväxeln är på): Fältet visas i formuläret.
- Falskt (som om ljusbrytaren är av): Fältet är dolt i formuläret.
Du kan använda SpreadSheet-formeln (inklusive taggen =) för att skriva en formel med hjälp av kalkylbladsliknande logik för att bestämma fältets synlighet. Du kan använda värden från andra fält i formuläret i den här formeln. Om en användare t.ex. väljer "Individuell" i ett registreringstypfält kan du dölja e-postfältet med en formel som kontrollerar det värdet.
Synlig uttrycksegenskap (Visa/dölj ett fält)
Med egenskapen Visible Expression kan du använda den regel som lagts till i egenskapen Visible för att bestämma om fältet ska visas eller döljas baserat på användarinteraktioner.
Använd =FORMULATEXT("Address of the corresponding Visible property) för att hämta formeln som anges i egenskapen Visible som en sträng till egenskapsfältet Visible Expression. Detta krävs för att dynamiskt visa/dölja fält i ett publicerat formulär.
Värdeegenskap (ange initiala data)
Föreställ dig ett förinställt värde på en nedtoningsbrytare för ett rumsljus. Egenskapen Value är liknande, vilket avgör det inledande tillståndet för de data som en användare ser i fältet. Den anger eller hämtar aktuella data som visas i formulärfältet.
När formuläret läses in för första gången anger egenskapen Value vad användaren ser i fältet innan han/hon gör några ändringar. Till skillnad från egenskaperna Visible och Visible Expression som styr synligheten, påverkar egenskapen Värde direkt själva data. Användarna kan ändra det här värdet genom att skriva, välja alternativ (nedrullningsbara menyer) eller interagera med fältet.
Du kan använda Excel-formel (inklusive taggen =) för att skriva en formel med hjälp av kalkylbladsliknande logik för att bestämma vilket värde som visas i fältet. Du kan använda värden från andra fält i formuläret i den här formeln. Du kan till exempel beräkna en rabatt automatiskt baserat på orderbeloppet som anges i ett annat fält.
Värdeuttrycksegenskap (Beräkna värden som ska visas i ett fält)
Med den här egenskapen kan du styra det värde som visas i ett fält baserat på en formel, som liknar synligt uttryck. Tänk dig en kalkylator inbyggd i fältet.
Använd =FORMULATEXT("Address of the corresponding Value property) för att hämta formeln som anges i egenskapen Value som en sträng till egenskapsfältet Value Expression. Detta krävs för att dynamiskt beräkna och visa beräknade värden i ett publicerat formulär.
Här är en analogi för att stärka dessa koncept:
- Synlig: Föreställ dig ett formulär som ett hus. Egenskapen"Synlig" fungerar som ljusbrytaren för varje rum (fält). Du bestämmer om rummet är belyst (synligt) eller mörkt (dolt) när någon kommer in i huset (öppnar formuläret).
- Synligt uttryck: Detta är som en omkopplare för rörelsesensorljus. Rummet (fältet) kan till en början vara mörkt (dolt), men en formel (rörelsesensor) kan aktivera det (visa fältet) om någon går förbi (ändrar värdet i ett annat fält).
- Värde: Detta är som en förinställd nedtoningsbrytare för ljuset (ursprungliga data i fältet). Användarna kan sedan justera intensiteten (ändra värdet).
- Värdeuttryck: Det här är som en avancerad räknare inbyggd i priskoden för en produkt i huset (form). Pristaggen (fältet) visar det slutliga priset baserat på en formel (till exempel tillägg av moms till baspriset) som använder annan information som baspriset (värde från ett annat fält).
Genom att kombinera dessa egenskaper med kalkylbladsfunktioner kan du få ett brett urval av dynamiska beteenden i dina formulär.
Kalkylbladsfunktioner för regler
Adaptiv Forms Block har stöd för en mängd kalkylbladsfunktioner som kan användas för att skapa regler. Här är funktioner som är tillgängliga direkt (OTB):
Logiska funktioner
Villkorliga funktioner
- IF(): Utvärderar ett villkor och returnerar ett specifikt värde om värdet är TRUE och ett annat värde om värdet är FALSE.
Matematiska funktioner
Skapa en regel
Låt oss titta närmare på några praktiska exempel som visar hur regler kan användas för att förbättra formulären:
Exempel 1: Villkorligt e-postfält
I det här exemplet visas hur kryssrutan fungerar som ett villkor. När det är markerat (villkoret är true) visas e-postrutan (åtgärden är true). Om alternativet inte är markerat (villkoret är false) döljs e-postrutan (åtgärden är false).
Skapa ett formulär med en kryssruta och en e-postruta, som visas i bilden nedan:
Så här använder du en regel för att visa e-postfältet när du markerar en kryssruta:
-
Ange egenskapen
Valueför kryssrutefältet tillTRUE. -
Ange egenskapen
Checkedför kryssrutefältet tillFALSE. Detta garanterar att kryssrutan inte är markerad som standard. -
Ange egenskapen
Visibleför e-postfältet till=[address of Checked property of the checkbox field] = true(). Till exempel=Q11=TRUE(). Formeln utvärderas om kryssrutan är markerad eller inte. Om kryssrutan är markerad utvärderas formeln till TRUE. Om kryssrutan inte är markerad utvärderas formeln till FALSE.Funktionen
TRUE()returnerar det logiska värdet när du anger det som en punkt på egenskapenCheckedomchecked = falsereturnerar false. Omchecked=truereturnerastrue. Detta garanterar att e-postfältet döljs som standard. -
Ange egenskapen
Visible Expressionför kryssrutefältet till=FORMULATEXT ((address of Visible property of the checkbox field)). Exempel:=FORMULATEXT((G12)). Funktionen FORMULATEXT() tar en formel som indata och returnerar själva formeln som en textsträng. Det hjälper till att använda formeln i formuläret.
-
Förhandsgranska och publicera formuläret. När du markerar kryssrutan visas e-postfältet, medan fältet döljs och en dynamisk användarupplevelse skapas.
Exempel 2: Automatisk beräkning
I det här exemplet visas hur ett formulär automatiskt beräknar uppskattad resekostnad när du väljer resedatum i ett formulär.
Skapa ett formulär med ett datumfält, en rumsbudget, en uppskattad resekostnad som visas nedan och en e-postruta som visas i bilden nedan:
Så här använder du en automatisk beräkning för att visa beräknad resekostnad:
-
Ange egenskapen
Valueför fältetamounttill=F6*DAYS(F3,F2). Den här formeln beräknar antalet dagar frånStart DateochEnd Date, multiplicerar antalet dagar med rumsbudget och visar resultatet i fältetEstimated Trip Cost. -
Ange egenskapen
Value Expressionför fältetEstimated Trip Costtill=FORMULATEXT ((address of value property of the amount field)). Exempel:=FORMULATEXT(F7). Funktionen FORMULATEXT() tar en formel som indata och returnerar själva formeln som en textsträng. Det hjälper till att använda formeln i formuläret. -
Förhandsgranska och publicera formuläret. Nu när du anger en
Start Date-,End Date- och rumsbudget.Estimated Trip Costberäknas automatiskt.
Exempel på funktioner i kalkylblad
Här är några exempel på vanliga tabellfunktioner:
Logiska funktioner:
-
NOT(): Inverterar det logiska läget (TRUE blir FALSE och vice versa).
Exempel: Dölja fältet Bekräfta e-post om e-postfältet lämnas tomt.
-
Ange egenskapen
Visibleför fältet Bekräfta e-post till=NOT(if('address of email field'="")).
-
Ange det synliga uttrycket för fältet Bekräfta e-post till
=FORMULATEXT ((address of visible property of the Confirm Email field))
-
-
AND(): Returnerar endast TRUE om alla angivna villkor är TRUE.
- Exempel: Aktivera bara knappen "skicka" om alla obligatoriska fält är ifyllda.
-
Ställ in egenskapen
Visibleför skicka-knappen till:code language-javascript =AND(NOT(address of `value` property of the `name` field = ""), NOT(address of `value` property of the `email` field = ""), NOT(address of `value` property of the `phone` field))Exempel:
code language-javascript =AND(NOT(F9=""), NOT(F12=""), NOT(F10="")) -
Ange det synliga uttrycket i fältet Bekräfta e-post till
code language-javascript =FORMULATEXT ((address of visible property of the Confirm Email field))Exempel:
code language-javascript =FORMULATEXT(G14)I den här formeln visas bara knappen "skicka" (TRUE) om alla fält (namn, e-post, telefon) är ifyllda (NOT()) returnerar TRUE för varje fält), annars döljs knappen (AND(flera FALSES) = FALSE).
-
OR(): Returnerar TRUE om minst ett av de angivna villkoren är TRUE.
- Exempel: Använder en rabatt om en användare anger någon av de tillämpliga rabattkupongkoderna.
- Ställ in egenskapen
Visibleför fältet"final amount" på:
code language-javascript =IF(OR(F14="BlackFridaySale", F14="NewYearDiscount"), (F6*DAYS(F3,F2)* 0.7) , (F6*DAYS(F3,F2)))-
Ange att värdeuttrycket för fältet Bekräfta e-post ska vara
code language-javascript =FORMULATEXT ((address of value property of the final amount field))Exempel:
code language-javascript =FORMULATEXT(F7)Den här formeln beräknar en rabatt på 30 % om användaren anger en kupongkod (kupongkod = "NewYearDiscount") ELLER (kupongkod = "BlackFridaySale"), annars anges rabatten till 0.
Textfunktioner:
-
IF(): Utvärderar ett villkor och returnerar ett specifikt värde om värdet är TRUE och ett annat värde om värdet är FALSE.
- Exempel: Visa ett anpassat meddelande baserat på en vald produktkategori.
-
Ange egenskapen
Valueför fältetmessagetillOnly upto 7 kg check-in lagguage is allowed!: -
Ange egenskapen
Visibleför fältetmessagetill:code language-javascript =if(address of value property of chosen product category ="Economy", TRUE(), FALSE())Exempel:
code language-javascript =if(F5="Economy", TRUE(), FALSE()) -
Ange värdeuttrycket för fältet
messagetillcode language-javascript =FORMULATEXT ((address of value property of the final amount field))Exempel:
code language-javascript =FORMULATEXT(G15)Den här formeln visar meddelandet"Endast upp till 7 kg incheckningsbagage tillåts!" om den valda klassen är"Ekonomi", annars lämnas meddelandefältet tomt.
Matematiska funktioner:
-
SUM(): Lägger till värden från ett angivet cellintervall.
Exempel: Beräkna den totala kostnaden för artiklar i en kundvagn.
I värdeuttrycket för fältet"total kostnad":
SUM (pris * kvantitet)Formeln förutsätter att du har separata fält för"pris" och"kvantitet" för varje artikel. De multipliceras och SUM() används för att addera den totala kostnaden för alla artiklar i kundvagnen.
-
ROUND(): Avrundar ett tal till ett angivet antal decimaler.
Exempel: Avrundar ett beräknat rabattbelopp till två decimaler.
I värdeuttrycket för fältet "rabattbelopp" (förutsatt att en rabatt beräknas någon annanstans):
ROUND(rabatt, 2)Den här formeln avrundar rabattvärdet till två decimaler.
-
MIN(): Returnerar det minsta värdet från ett angivet cellintervall.
Exempel: Söker efter den lägsta ålder som krävs för ett registreringsformulär baserat på ett valt land.
I värdeuttrycket för fältet"minimiålder":
MIN(ageLimits["US"], ageLimits ["UK"], ageLimits ["Frankrike"])Formeln förutsätter att du har en tabell med namnet"ageLimits" som lagrar krav på minimiålder för olika länder. MIN() används för att hitta det minsta värdet bland dem.
Dessutom kan du med Adaptive Forms Block ta kontrollen över dina formulär genom att skapa anpassade funktioner. Med anpassade funktioner kan du definiera egna regler och logik, vilket ger dig fullständig kontroll över hur formulären fungerar.
Skapa och distribuera anpassade funktioner
Det anpassningsbara Forms-blocket som finns i körklart läge (OTB) innehåller implementeringar för många vanliga kalkylbladsfunktioner. Om du vill ha större kontroll över formulären kan du använda valfri OTB-funktion i Microsoft® Excel eller Google Sheets i dina adaptiva Forms-block. Det adaptiva Forms-blocket innehåller inte implementering för alla OTB-funktioner som finns i Microsoft® Excel eller Google Sheets. Om du behöver någon av dessa funktioner kan du utveckla en anpassad funktion med liknande syntax för att få den funktionalitet som finns i Microsoft® Excel eller Google Sheets. Du kan till exempel implementera funktionen Microsoft® Excel's Year() för att beräkna åldern från och med födelsedatumet.
Skapa en anpassad funktion
Anpassade funktioner finns i filen [Adaptive form block]/functions.js. Att skapa innefattar i allmänhet följande steg:
- Funktionsdeklaration: Definiera funktionsnamnet och dess parametrar (de indata som accepteras).
- Logikimplementering: Skriv koden som anger de specifika beräkningar eller ändringar som utförs av funktionen.
- Funktionsexport: Gör funktionen tillgänglig i reglerna genom att exportera den från den relevanta filen.
Exempel: Årsfunktion
I det här exemplet visas två anpassade funktioner som efterliknar funktionen YEAR() i Microsoft® Excel för att beräkna åldern:
/**
- Get the current date and time
- @name now
- @returns {Date} The current date and time as a Date object
*/
function now() {
const today = new Date();
return today;
}
/**
- Get the year from a Date object
- @name year
- @param {Date} date The date object
- @throws {TypeError} If the input is not a Date object
- @returns {number} The year as a number
*/
function year(date) {
let inputDate = new Date(date)
if (!(inputDate instanceof Date)) {
throw new TypeError("Input must be a Date object");
}
const year = inputDate.getFullYear();
return year;
}
// Make the function accessible for use in rules
export { now, year };
Använd en anpassad funktion i formuläret
Så här använder du den anpassade funktionen i ditt formulär:
- Lägg till funktionen: Inkludera din anpassade funktion i filen
[Adaptive form block]/functions.js. Kom ihåg att lägga till den i exportsatsen i filen. - Distribuera filen: Distribuera den uppdaterade
functions.jsfilen till ditt GitHub-projekt och verifiera att bygget lyckades. - Funktionsanvändning: Använd funktionen i formulärets kalkylblad med egenskaperna
Value,Value Expression,VisibleellerVisible Expressionsom liknar andra kalkylbladsfunktioner som stöder OTB. - Förhandsgranska formuläret: Använd AEM Sidekick för att förhandsgranska formuläret med den nyligen implementerade funktionen.