Vi använder kakor (cookies) för att webbplatsen ska fungera så bra som möjligt för dig.
Vi använder också kakor för webbanalys för att göra webbplatsen bättre.
Godkänner du att vi också använder kakor för webbanalys?
ValidationPlugin möjliggör validering av inmatningsfält genom att lägga till direktivet v-validation.
Internt används ValidationService ifrån @fkui/logic.
ValidationPlugin initialiseras på nedan sätt (bör göras så tidigt i applikationen som möjligt, till exempel main.ts )
Via ValidationService.setErrorMessages() kan du specificera översättningar av validatorfel.
I nedan exempel anges ett objekt med validatornamnet som nyckel och översättning som värde (om översättning saknas så kommer validatornamnet istället användas).
import { ValidationService } from"@fkui/logic";
ValidationService.setErrorMessages({
required: "Fältet krävs",
personnummerFormat: "Felaktigt format på personnummer",
});
Använd ValidationErrorMessageBuilder för att få autocompletion av validatornamn:
import { ValidationService, ValidationErrorMessageBuilder } from"@fkui/logic";
const messages = ValidationErrorMessageBuilder.create()
.map("required", "The field is required")
.map("personnummerFormat", "Bad formatted social security number")
.mapCombined(
"required",
"personnummerFormat",
"You must enter a social security number",
)
.build();
ValidationService.setErrorMessages(messages);
Flera validatorer kan läggas till fältet genom att separera dem med punkter. Vissa validatorer kräver en konfiguration vilket görs genom att ange konfigurationen i direktivsvärdet.
Observera Ordningen definierar prioriteten för varje validator, ju längre till vänster desto högre prioritet.
Till exempel i v-validation.required.maxLength.minLength kommer validatorn för required köras först och endast om den validatorn är giltig kommer nästa validator att köras och så vidare.
Valideringsdirektivet är även reaktivt vilket betyder att man kan binda variabler i konfigurationen och när variablerna uppdateras i runtime så kommer valideringen hantera detta.
Om du behöver utveckla en egen komponent med inbyggd validering som standard-beteende måste du lägga till validatorn i komponentens mounted()-metod via metoden ValidationService.addValidatorsToElement() och med tredje parametern isBaseConfigs satt till true:
import { useTemplateRef } from"vue";
import { ValidationService, typeValidatorConfigs } from"@fkui/logic";
constvalidatorConfigs: ValidatorConfigs = {
email: { errorMessage: "E-posten är inte korrekt ifylld" },
};
const element = document.querySelector<HTMLInputElement>("#my-element");
if (element) {
ValidationService.addValidatorsToElement(element, validatorConfigs, true);
}
Alla validatorers konfiguration tar attributet errorMessage som ersätter felmeddelandet som definieras med ValidatorService.setErrorMessages() funktionen.
I de fall då flera fält har samma etikett kan det bli svårt att urskilja dem i fellistan.
Vue-direktivet v-validation-prefix plockar ut errorMessage från alla component-validity-event som kommer underifrån i DOM-hierarkin och lägger på den angivna texten som prefix innan det bubblar vidare till formuläret.
Det innebär att du kan lägga direktivet på flera platser för att kontinuerligt lägga på fler prefix.
Om du dynamiskt behöver aktivera/inaktivera en validering, kan du passa in enabled som option på samtliga validatorer.
Ett use-case för detta är till exempel om ett fält längre ned skall vara required baserat på val som tidigare har gjorts.
ValidationService används när du vill tvinga revalidering av fält, till exempel vid submit.
Den erbjuder även funktioner för att sätta fel ifrån servern.
Vid validering tolkas inaktiva fält (inmatningsfält med disabled attributet satt) som giltiga oavsett resultatet från validering.
Detta eftersom användaren inte har möjlighet att interagera med inaktiva fält och därför inte kan rätta felet.
Om du dynamiskt växlar disabled krävs det att du manuellt validerar om elementet när fältet blir inaktivt för att tömma eventuella existerande fel.
Det rekommenderade sättet är att använda sig av event listeners för change, click och så vidare och validera om därifrån.