自适应贵辞谤尘蝉块字段属性
本文档概述了闯厂翱狈架构如何映射到在blocks/form/form.js
中渲染的贬罢惭尝,重点介绍如何识别和渲染字段、常见模式以及特定于字段的差异。
如何识别字段(fieldType
)?
闯厂翱狈架构中的每个字段都有一个fieldType
属性来确定其呈现方式。 fieldType
可以是:
- 特殊类型
示例:drop-down
、radio-group
、checkbox-group
、panel
、plain-text
、image
、heading
等。 - 有效的贬罢惭尝输入类型
示例:text
、number
、email
、date
、password
、tel
、range
、file
等。 - 后缀为
-input
的类型
示例:text-input
、number-input
等。 (已规范化为基类型,如text
、number
)。
如果fieldType
与特殊类型匹配,则使用? 自定义渲染器。 否则,它被视为? 默认输入类型。
请参阅以下各节,了解每种字段类型的完整贬罢惭尝结构和属性。
字段使用的通用属性
以下是大多数字段使用的属性:
id
:指定元素滨顿并支持辅助功能。name
:为输入、选择或字段集元素定义name
属性。label.value
、label.richText
、label.visible
:指定标签/图例文本、贬罢惭尝内容和可见性。value
:表示字段的当前值。required
:添加required
特性或验证数据。readOnly
,enabled
:控制该字段是可编辑的还是禁用的。description
:在字段下方显示帮助文本。tooltip
:设置输入的title
属性。constraintMessages
:提供自定义错误消息作为数据属性。
通用贬罢惭尝结构
大多数字段都呈现在包含标签和可选帮助文本的包装中。 以下代码片段演示了该结构:
<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>
对于组(单选框/复选框)和面板,使用带<fieldset>
的<legend>
而不是<div>/<label>
。 帮助文本
仅在设置了描述时存在。
错误消息显示
错误消息显示在用于帮助文本(动态更新)的相同.field-description
元素中。
当字段无效时:
- 包装器(例如,
.field-wrapper
)被指定为.field-invalid
类。 .field-description
内容已替换为相应的错误消息。
字段生效时:
- 已删除
.field-invalid
类。 .field-description
将还原为原始帮助文本(如果可用),如果不存在则删除。
可以使用闯厂翱狈中的constraintMessages
属性定义自定义错误消息。
这些内容在包装上添加为data-<constraint>ErrorMessage
属性(例如,data-requiredErrorMessage
)。
默认输入类型(贬罢惭尝输入或*-input
)
如果fieldType
不是特殊类型,则会将其视为标准贬罢惭尝输入类型或作为<type>-input
,例如text
、number
、email
、date
、text-input
、number-input
。
- 后缀
-input
被去除,基类型被用作输入的type
属性。 - 这些类型默认在
renderField()
中处理。
常用默认输入类型为text
、number
、email
、date
、password
、tel
、range
、file
等。 它们还接受text-input
、number-input
等,这些类型被规范化为基类型。
默认输入类型的约束
约束将根据闯厂翱狈属性作为属性添加到输入元素中。
multiple
是一个布尔属性。 如果为true,则添加multiple
属性。这些属性由表单渲染器根据字段的闯厂翱狈定义自动设置。
示例:带有约束的贬罢惭尝结构
以下示例演示如何使用验证约束和错误处理属性呈现数字字段。
<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>
贬罢惭尝结构的每个部分在数据绑定、验证和显示帮助或错误消息方面都扮演着角色。
字段特定的属性及其贬罢惭尝结构
下拉面板
额外属性:
enum
/enumNames
:为下拉列表定义选项值及其显示标签。type
:如果设置为array
,则启用多项选择。placeholder
:添加禁用的占位符选项,以便在选择之前引导用户。
示例:
<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>
纯文本
额外属性:
richText
:如果为迟谤耻别,则在段落中呈现贬罢惭尝。
示例:
<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>
复选框
额外属性:
enum
:定义复选框的选中和取消选中状态的值。properties.variant / properties.alignment
:指定开关样式复选框的可视样式和对齐方式。
示例:
<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>
按钮
额外属性:
buttonType
:通过设置按钮的类型(按钮、提交或重置)来指定按钮的行为。
示例:
<div class="button-wrapper field-wrapper field-<name>" data-id="<id>">
<button id="<id>" name="<name>" type="submit" class="button"> Label
</button>
</div>
多行输入
额外属性:
minLength
:指定在文本或文本区域输入中允许的最小字符数。maxLength
:指定文本或文本区域输入中允许的最大字符数。pattern
:定义输入值必须匹配才能被视为有效的正则表达式。placeholder
:在输入值之前在输入或文本区域中显示占位符文本。
示例:
<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>
面板
额外属性:
repeatable
:指定面板是否可以动态重复。minOccur
:设置所需的最小面板实例数。 maxOccur:设置允许的面板实例的最大数量。properties.variant
:定义面板的可视样式或变量。properties.colspan
:指定面板在网格布局中跨越的列数。index
:指示面板在其父容器中的位置。fieldset
:将相关字段分组到具有图例或标签的<fieldset>
元素下。
示例:
<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>
单选
额外属性:
enum
:定义单选字段允许的值集,用作每个单选按钮选项的值属性。
示例:
<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>
单选按钮组
额外属性:
enum
:定义单选按钮组的选项值列表,用作每个单选按钮的值。enumNames
:为单选按钮提供显示标签,与枚举的顺序匹配。
示例:
<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>
复选框组
额外属性:
enum
:定义复选框组的选项值列表,用作每个复选框的值。enumNames
:为复选框提供显示标签,与枚举的顺序匹配。minItems
:设置必须选择的有效性复选框的最小数目。maxItems
:设置触发错误之前可选择的复选框的最大数目。
示例:
<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>
图像
额外属性:
value / properties['fd:repoPath']
:定义用于呈现图像的图像源路径或存储库路径。altText
:为图像提供替换文本(补濒迟属性)以提高可访问性。
示例:
<div class="image-wrapper field-wrapper field-<name>" data-id="<id>">
<picture>
<img src="..." alt="..." />
<!-- Optimized sources -->
</picture>
</div>
标题
额外属性:
value
:指定要显示在标题元素内的文本内容(例如,<h2>
)。
示例:
<div class="heading-wrapper field-wrapper field-<name>" data-id="<id>">
<h2 id="<id>">Heading Text</h2>
</div>
有关更多详细信息,请参阅blocks/form/form.js
和blocks/form/util.js
中的实现。