Egenskaper för anpassat Forms-blockfält

Det här dokumentet sammanfattar hur JSON-scheman mappar till återgiven HTML i blocks/form/form.js, med fokus på hur fält identifieras och återges, vanliga mönster och fältspecifika skillnader.

Hur fält (fieldType) identifieras?

Varje fält i JSON-schemat har en fieldType-egenskap som avgör hur det återges. fieldType kan vara:

  • En specialtyp
    Exempel: drop-down, radio-group, checkbox-group, panel, plain-text, image, heading osv.
  • En giltig HTML-indatatyp
    Exempel: text, number, email, date, password, tel, range, file osv.
  • En typ med ett -input suffix
    Exempel: text-input, number-input osv. (normaliserat till bastypen som text, number).

Om fieldType matchar en specialtyp används en anpassad renderare . Annars behandlas den som en standardindatatyp.

Se avsnitten nedan för den fullständiga HTML-strukturen och egenskaperna för varje fälttyp.

Vanliga egenskaper som används av fält

Nedan visas de egenskaper som används i de flesta fält:

  • id: Anger element-ID:t och stöder hjälpmedel.
  • name: Definierar attributet name för indata-, select- eller fältuppsättningselement.
  • label.value, label.richText, label.visible: Anger etikettexten/förklaringstexten, HTML-innehåll och synlighet.
  • value: Representerar fältets aktuella värde.
  • required: Lägger till attributet required eller valideringsdata.
  • readOnly, enabled: Kontrollerar om fältet är redigerbart eller inaktiverat.
  • description: Visar hjälptext under fältet.
  • tooltip: Anger attributet title för indata.
  • constraintMessages: Tillhandahåller anpassade felmeddelanden som dataattribut.

Vanlig HTML-struktur

De flesta fält återges i en wrapper som innehåller en etikett och valfri hjälptext. I följande utdrag visas strukturen:

<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>

För grupper (radio/kryssruta) och paneler används en <fieldset> med en <legend> i stället för en <div>/<label>. Hjälptexten

finns bara om beskrivning har angetts.

Felmeddelandevisning

Felmeddelanden visas i samma .field-description-element som används för hjälptexten, som uppdateras dynamiskt.

När ett fält är ogiltigt:

När fältet blir giltigt:

Anpassade felmeddelanden kan definieras med egenskapen constraintMessages i JSON.
De läggs till som data-<constraint>ErrorMessage-attribut i wrapper (till exempel data-requiredErrorMessage).

Standardindatatyper (HTML Input eller *-input)

Om fieldType inte är en specialtyp behandlas den som en HTML-standardindatatyp eller som <type>-input, till exempel text, number, email, date, text-input, number-input.

Begränsningar för standardindatatyper

Begränsningar läggs till som attribut i indataelementet baserat på JSON-egenskaper.

JSON-egenskap
HTML Attribute
Gäller för
maxLength
maxlength
text, e-post, lösenord, tel
minLength
minlength
text, e-post, lösenord, tel
mönster
mönster
text, e-post, lösenord, tel
maximum
max
tal, intervall, datum
minimum
min
tal, intervall, datum
steg
steg
tal, intervall, datum
acceptera
acceptera
fil
flera
flera
fil
maxOccur
data-max
panel
minOccur
data-min
panel
NOTE
multiple är en boolesk egenskap. Om värdet är true läggs attributet multiple till.

Dessa attribut anges automatiskt av formuläråtergivaren baserat på fältets JSON-definition.

Exempel: HTML Structure med Constraints

I följande exempel visas hur ett nummerfält återges med valideringsbegränsningar och felhanteringsattribut.

<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>

Varje del av HTML-strukturen spelar en roll när det gäller databindning, validering och visning av hjälp- och felmeddelanden.

Fältspecifika egenskaper och deras HTML-strukturer

Nedrullningsbar meny

Extra egenskaper:

Exempel:

<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>

Oformaterad text

Extra egenskaper:

Exempel:

<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>

Kryssruta

Extra egenskaper:

Exempel:

<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>

Knapp

Extra egenskaper:

Exempel:

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

Flera rader

Extra egenskaper:

Exempel:

<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>

Panel

Extra egenskaper:

Exempel:

<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 egenskaper:

Exempel:

<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>

Alternativgrupp

Extra egenskaper:

Exempel:

<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>

Kryssrutegrupp

Extra egenskaper:

Exempel:

<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>

Bild

Extra egenskaper:

Exempel:

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

Rubrik

Extra egenskaper:

Exempel:

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

Mer information finns i implementeringen i blocks/form/form.js och blocks/form/util.js.

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