Eigenschappen van Adaptief Forms-blokveld

In dit document wordt een overzicht gegeven van de manier waarop JSON-schema wordt toegewezen aan weergegeven HTML in blocks/form/form.js . Hierbij wordt de nadruk gelegd op de manier waarop velden worden geïdentificeerd en weergegeven, op algemene patronen en op veldspecifieke verschillen.

Hoe worden velden (fieldType) geïdentificeerd?

Elk veld in het JSON-schema heeft een fieldType -eigenschap die bepaalt hoe het wordt gerenderd. De fieldType kan zijn:

  • een speciaal type van A
    Voorbeelden: drop-down , radio-group , checkbox-group , panel , plain-text , image , heading , enzovoort.
  • Een geldig HTML inputtype
    Voorbeelden: text , number , email , date , password , tel , range , file , enzovoort.
  • Type A met a -input achtervoegsel
    Voorbeelden: text-input , number-input , enzovoort. (genormaliseerd voor het basistype, zoals text , number ).

Als fieldType een speciaal type aanpast, wordt a douanerenderer gebruikt. Anders, wordt het behandeld als a standaardinputtype.

Zie de secties hieronder voor de ​ volledige structuur en eigenschappen van HTML ​ voor elk gebiedstype.

Algemene eigenschappen die door velden worden gebruikt

Hieronder ziet u de eigenschappen die door de meeste velden worden gebruikt:

  • id - Geeft de element-id op en ondersteunt toegankelijkheid.
  • name: definieert het kenmerk name voor invoer-, selectie- of veldsetelementen.
  • label.value , label.richText , label.visible : geeft de label-/legendetekst, HTML-inhoud en zichtbaarheid op.
  • value - Geeft de huidige waarde van het veld aan.
  • required: voegt het attribuut required of validatiegegevens toe.
  • readOnly, enabled: hiermee bepaalt u of het veld bewerkbaar of uitgeschakeld is.
  • description: geeft de Help-tekst onder het veld weer.
  • tooltip: stelt het kenmerk title voor invoer in.
  • constraintMessages: levert aangepaste foutberichten als gegevenskenmerken.

Algemene HTML-structuur

De meeste velden worden weergegeven in een omslag die een label en optionele Help-tekst bevat. Het volgende fragment demonstreert de structuur:

<div class="<fieldType>-wrapper field-wrapper field-<name>" data-id="<id>">
<label for="<id>" class="field-label">Label</label>
<!-- Field-specific input/element here -->
<div class="field-description" id="<id>-description">Description or error
message</div>
</div>

Voor groepen (keuzerondjes/selectievakjes) en deelvensters wordt een <fieldset> met een <legend> gebruikt in plaats van een <div>/<label> . De Help-tekst

is alleen aanwezig als er een beschrijving is ingesteld.

Weergave foutbericht

Foutberichten worden weergegeven in hetzelfde element van het type .field-description dat wordt gebruikt voor Help-tekst, dat dynamisch wordt bijgewerkt.

wanneer een gebied ongeldig is:

wanneer het gebied geldig wordt:

Aangepaste foutberichten kunnen worden gedefinieerd met de eigenschap constraintMessages in JSON.
Deze worden toegevoegd als data-<constraint>ErrorMessage -kenmerken op de omslag (bijvoorbeeld data-requiredErrorMessage ).

Standaardinvoertypen (HTML-invoer of *-input)

Als fieldType geen speciaal type is, wordt het beschouwd als een standaard HTML-invoertype of als <type>-input bijvoorbeeld text , number , email , date , text-input , number-input .

Restricties voor standaardinvoertypen

Restricties worden toegevoegd als kenmerken op het invoerelement op basis van JSON-eigenschappen.

JSON-eigenschap
HTML-kenmerk
Van toepassing op
maxLength
maxlength
text, email, password, tel
minLength
minlengte
text, email, password, tel
patroon
patroon
text, email, password, tel
maximum
max
getal, bereik, datum
minimum
min
getal, bereik, datum
stap
stap
getal, bereik, datum
accepteren
accepteren
file
meerdere
meerdere
file
maxOccur
data-max
deelvenster
minOccur
data-min
deelvenster
NOTE
multiple is een Booleaanse eigenschap. Indien true, wordt het kenmerk multiple toegevoegd.

Deze kenmerken worden automatisch ingesteld door de formulierrenderer op basis van de JSON-definitie van het veld.

Voorbeeld: HTML-structuur met restricties

In het volgende voorbeeld ziet u hoe een nummerveld wordt weergegeven met validatiebeperkingen en foutafhandelingskenmerken.

<div class="number-wrapper field-wrapper field-age" data-id="age"
data-required="true"
data-minimumErrorMessage="Too small" data-maximumErrorMessage="Too large">
<label for="age" class="field-label">Age</label>
<input type="number"
id="age" name="age"
value="30" required min="18"
max="99" step="1"
placeholder="Enter your age" />
<div class="field-description" id="age-description"> Description or error message
</div>
</div>

Elk onderdeel van de HTML-structuur speelt een rol in gegevensbinding, -validatie en het weergeven van Help- of foutberichten.

Veldspecifieke eigenschappen en de bijbehorende HTML-structuren

Vervolgkeuzelijst

Extra Eigenschappen:

Voorbeeld:

<div class="drop-down-wrapper field-wrapper field-<name>" data-id="<id>"
data-required="true"
data-requiredErrorMessage="This field is required">
<label for="<id>" class="field-label">Label</label>
<select id="<id>" name="<name>" required title="Tooltip" multiple>
<option disabled selected value="">Placeholder</option>
<option value="opt1">Option 1</option>
<option value="opt2">Option 2</option>
</select>
<div class="field-description" id="<id>-description"> Description or error message
</div>
</div>

Onbewerkte tekst

Extra Eigenschappen:

Voorbeeld:

<div class="plain-text-wrapper field-wrapper field-<name>" data-id="<id>">
<label for="<id>" class="field-label">Label</label>
<p>Text or <a href="..." target="_blank">link</a></p>
</div>

Selectievakje

Extra Eigenschappen:

Voorbeeld:

<div class="checkbox-wrapper field-wrapper field-<name>" data-id="<id>"
data-required="true"
data-requiredErrorMessage="Please check this box">
<label for="<id>" class="field-label">Label</label>
<input type="checkbox"
id="<id>"
name="<name>" value="on"
required
data-unchecked-value="off" />
<div class="field-description" id="<id>-description"> Description or error message
</div>
</div>

Knop

Extra Eigenschappen:

Voorbeeld:

<div class="button-wrapper field-wrapper field-<name>" data-id="<id>">
<button id="<id>" name="<name>" type="submit" class="button"> Label
</button>
</div>

Multiline-invoer

Extra Eigenschappen:

Voorbeeld:

<div class="multiline-wrapper field-wrapper field-<name>" data-id="<id>"
data-minLengthErrorMessage="Too short" data-maxLengthErrorMessage="Too long">
<label for="<id>" class="field-label">Label</label>
<textarea id="<id>"
name="<name>" required
minlength="2"
maxlength="100"
pattern="[A-Za-z]+"
placeholder="Type here..."></textarea>
<div class="field-description" id="<id>-description"> Description or error message
</div>
</div>

Deelvenster

Extra Eigenschappen:

Voorbeeld:

<fieldset class="panel-wrapper field-wrapper field-<name>" data-id="<id>"
name="<name>"
data-repeatable="true" data-index="0">
<legend class="field-label">Label</legend>
<!-- Nested fields here -->
<button type="button" class="add">Add</button>
<button type="button" class="remove">Remove</button>
<div class="field-description" id="<id>-description"> Description or error message
</div>
</fieldset>

Radio

Extra Eigenschappen:

Voorbeeld:

<div class="radio-wrapper field-wrapper field-<name>" data-id="<id>"
data-required="true">
<label for="<id>" class="field-label">Label</label>
<input type="radio" id="<id>" name="<name>" value="opt1" required />
<div class="field-description" id="<id>-description"> Description or error message
</div>
</div>

Groep keuzerondjes

Extra Eigenschappen:

Voorbeeld:

<fieldset class="radio-group-wrapper field-wrapper field-<name>" data-id="<id>"
data-required="true">
<legend class="field-label">Label</legend>
<div>
<input type="radio" id="<id>-0" name="<name>" value="opt1" required />
<label for="<id>-0">Option 1</label>
</div>
<div>
<input type="radio" id="<id>-1" name="<name>" value="opt2" />
<label for="<id>-1">Option 2</label>
</div>
<div class="field-description" id="<id>-description"> Description or error message
</div>
</fieldset>

Checkbox Groep

Extra Eigenschappen:

Voorbeeld:

<fieldset class="checkbox-group-wrapper field-wrapper field-<name>" data-id="<id>"
data-required="true" data-minItems="1"
data-maxItems="3">
<legend class="field-label">Label</legend>
<div>
<input type="checkbox" id="<id>-0" name="<name>" value="opt1" required />
<label for="<id>-0">Option 1</label>
</div>
<div>
<input type="checkbox" id="<id>-1" name="<name>" value="opt2" />
<label for="<id>-1">Option 2</label>
</div>
<div class="field-description" id="<id>-description"> Description or error message
</div>
</fieldset>

Afbeelding

Extra Eigenschappen:

Voorbeeld:

<div class="image-wrapper field-wrapper field-<name>" data-id="<id>">
<picture>
<img src="..." alt="..." />
<!-- Optimized sources -->
</picture>
</div>

Kop

Extra Eigenschappen:

Voorbeeld:

<div class="heading-wrapper field-wrapper field-<name>" data-id="<id>">
<h2 id="<id>">Heading Text</h2>
</div>

Zie de implementatie in blocks/form/form.js en blocks/form/util.js voor meer informatie.

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab