Field Conditions
Learn how to apply conditions to form fields.
Sometimes you may want to manipulate the value or appearance of a form field under certain conditions, for example, you may want to hide an input if a checkbox is ticked or preset the value of another field.
# Trigger Events
Trigger Events are defined with the trigger form field property and is a simple browser based solution that uses JavaScript. It allows you to change elements attributes such as visibility or value, based on another elements' state. Here is a sample definition:
is_delayed:
label: Send later
comment: Place a tick in this box if you want to send this message at a later time.
type: checkbox
send_at:
label: Send date
type: datepicker
cssClass: field-indent
trigger:
action: show
field: is_delayed
condition: checked
In the above example the send_at form field will only be shown if the is_delayed field is checked. In other words, the field will show (action) if the other form input (field) is checked (condition).
The trigger definition specifies these properties.
| Property | Description |
|---|---|
| action | defines the action applied to this field when the condition is met. Supported values: show, hide, enable, disable, empty. |
| field | defines the other field name that will trigger the action. |
| condition | determines the condition the specified field should satisfy for the condition to be considered "true". Supported values: checked, unchecked, value[somevalue]. |
# Multiple Actions
You may combine multiple actions by separating them with a pipe | symbol. The following will both display and empty the input when the trigger condition is met.
trigger:
action: show|empty
condition: checked
field: name
# Multiple Value Conditions
When using the value[] condition, you may look for multiple values by passing extra values after the first one, which takes the format value[][].
trigger:
action: show
condition: value[csv][csv_custom]
field: file_format
# Referencing Parent Fields
Normally the field name refers to a field in the same level form. For example, if this field is in a repeater widget, only fields in that same repeater widget will be checked. However, if the field name is preceded by a caret symbol ^ like: ^parent_field, it will refer to a repeater widget or form one level higher than the field itself.
In the example below, the colors field will be shown when the type field is set to Complex.
fields:
type:
label: Type
type: dropdown
options:
1: Simple
2: Complex
content:
label: Content
type: nestedform
form:
fields:
colors:
label: Colors
type: colorpicker
trigger:
action: show
field: ^type
condition: value[2]
Additionally, if more than one caret ^ is used, it will refer that many levels higher: ^^grand_parent_field, ^^^grand_grand_parent_field, etc.
# Input Preset Converter
The input preset converter is defined with the preset form field property and allows you to convert text entered into an element to a URL, slug or file name value in another input element.
In this example we will automatically fill out the url field value when a user enters text in the title field. If the text Hello world is typed in for the Title, the URL will follow suit with the converted value of /hello-world. This behavior will only occur when the destination field (url) is empty and untouched.
title:
label: Title
url:
label: URL
preset:
field: title
type: url
Alternatively, the preset value can also be a string that refers to the field only, the type option will then default to slug.
slug:
label: Slug
preset: title
The following options are available for the preset option:
| Option | Description |
|---|---|
| field | defines the other field name to source the value from. |
| type | specifies the conversion type. See below for supported values. |
| prefixInput | optional, prefixes the converted value with the value found in the supplied input element using a CSS selector. |
Following are the supported types:
| Type | Description |
|---|---|
| exact | copies the exact value |
| slug | formats the copied value as a slug |
| url | same as slug but prefixed with a / |
| camel | formats the copied value with camelCase |
| file | formats the copied value as a file name with whitespace replaced with dashes |
← Definitions Mixin →