Skip to main content
Dashboard > Actions > Forms > Custom field
カスタムフィールドを使用すると、フォームの見た目や操作性を拡張し、JavaScript、HTML、CSS を使って高度なロジックを追加できます。 カスタムフィールドには、フォームとのデータ受け渡し、フロントエンドおよびバックエンドのバリデーションの追加、focus や blur などの一般的なイベントの処理を容易にする内部メソッドが用意されています。 カスタムフィールドを使うと、次のようなものを作成できます。
  • カスタムのデータ構造を持つフィールド。
    • : オブジェクト、文字列の配列
  • サードパーティのウィジェットを使用するフィールド。
    • : Google Address autocomplete
  • 他のフィールドの表示・非表示を切り替えるロジックを持つフィールド。
  • 値の取得に外部 API が必要なフィールド。
カスタムフィールドを使用するには、Custom Domains を有効にする必要があります。カスタムドメイン外でカスタムフィールドを含むフォームをレンダリングすると、エラーが表示されます。

カスタムフィールドの設定

カスタムフィールドの設定は以下のとおりです。

パラメータ

カスタムフィールドのソースコード内で参照するキーと値のペアを追加します。キーと値のペアには、フォームフィールドの変数を含めることができます。
パラメータの値は、フォームで init() メソッドが呼び出された後にのみ使用できます。
: 以下の例では、カスタムフィールドのパラメータ設定に symbol={{fields.symbol}}separator=, というキーと値のペアが設定されています。

ソースコード

JavaScript のコードをカスタムフィールドに追加します。
:

JSON Schema

デフォルトでは、カスタムフィールドは任意の形式の値を受け付けます。ただし、JSON Schema を使って、サーバー側で値を検証することもできます。
:
複雑なバリデーション要件に対応するには、flow を使用できます。

CSS

カスタムフィールドに CSS スタイルを追加します。

カスタムフィールドハンドラー

これらのハンドラーを使うと、フィールドに独自の動作を追加できます。

init()

フィールドの作成時に一度だけ呼び出され、パラメータ 設定で構成した params の値が渡されます。 HTML 要素、文字列、または何も返しません。 :

update()

ユーザーが同じフォームステップを再度開いたときに呼び出されます。 このオプションは、UI ロジックを再レンダリングしたり、変更されている可能性がある params の値を更新したりする必要がある場合に便利です。

onFocus()

フォーカスがカスタムフィールドのHTML要素に入ったときに呼び出されます。

onBlur()

フォーカスがカスタムフィールドの HTML 要素から外れたときに呼び出されます。

getValue()

フォームがカスタムフィールドの値を1回以上取得する必要がある場合に呼び出されます。通常は、ユーザーがフォームのステップを送信したときに実行されます。クライアント側でバリデーションを行う必要がある場合は、エラーをスローして、ユーザーにカスタムエラーメッセージを表示できます。 例:

block()

カスタムフィールドをブロックする必要がある場合に呼び出されます。通常は、ユーザーがフォームのステップを送信し、そのデータがバックエンドで処理される際に実行されます。

unblock()

カスタムフィールドのブロックを解除する必要がある場合に呼び出されます。通常は、ユーザーがフォームのステップを送信した後、または検証エラーによりデータのバックエンドでの処理が停止した後に実行されます。

getScripts()

フォームが init() メソッドを呼び出す前に、読み込みが完了していることが保証される URL の一覧を返します。 :

コンテキストオブジェクト

コンテキストオブジェクトを渡すと、これらのメソッドを使ってフォームやコンポーネントのロジックを処理できます。

カスタムメソッド

context.custom.getValue()

現在のカスタムフィールドの値を返します。

context.custom.setValue()

現在のカスタムフィールドに値を設定します。 :

context.custom.createUid()

現在のカスタムフィールドに対する一意の識別子を返します。 :

context.custom.getParams()

現在のカスタムフィールド設定のパラメータを取得します。
パラメータの値は、フォームで init() メソッドが呼び出された後にのみ利用できます。
:

フォームメソッド

他のフィールドの値を取得したり、フォームの別のステップに移動したりするためにフォームを操作する必要がある場合は、次のフォームメソッドを使用できます。

context.form.getId()

現在のフォームの一意のIDを返します。

context.form.getRoot()

現在のフォームのルートHTML要素を返します。

context.form.goForward()

フォームの次のステップに進みます。

context.form.goPrevious()

前のフォームのステップに戻ります。

context.form.isValid()

フォームがクライアント側のすべてのバリデーションを通過しているかどうかを示す真偽値を返します。

context.form.validate()

続行する前に、既存のフィールド値に対してクライアント側の検証を実行します。フィールドが検証を通過しない場合は、エラーメッセージが表示されます。

context.form.getAllHiddenFields()

すべての隠しフィールドの値を含むオブジェクトを返します。

context.form.setHiddenField(id, value)

隠しフィールドの値を設定します。

context.form.getValues()

すべてのフィールドと隠しフィールドの値を含むオブジェクトを返します。

context.form.getField(id)

指定したフィールドのインスタンスを返します。
  • getNode() | true フィールドのルートHTML要素を返します。
  • getValue() フィールドの値を返します。
  • setRequired(boolean) フィールドを必須に設定、または必須設定を解除します。
:
setRequired() は、クライアント側でのみフィールドの必須設定を切り替えます。たとえば、フィールドの必須を解除しても、フィールド設定でその項目が必須になっている場合は、値が入力されていなければフォームでエラーが返されます。

カスタムフィールドの例

以下のセクションでは、フォームに追加できるカスタムフィールドの例を紹介しています。

範囲入力カスタムフィールド

あらかじめ定義された範囲内の値を返すカスタムフィールドです。
ソースコード:

カラー入力のカスタムフィールド

カラーの16進数値を返すカスタムフィールドです。
ソースコード:

API の値を使ったオートコンプリート入力のカスタムフィールド

サードパーティ API を使用してオートコンプリート値を返すカスタムフィールドです。
ソースコード:

APIの値を使用する動的なドロップダウンのカスタムフィールド

サードパーティのAPIを使用した動的なドロップダウンリストから値を返すカスタムフィールドです。
ソースコード:

(+) ボタンで項目を追加できる動的入力カスタムフィールド

ユーザーが項目を追加できるカスタムフィールドです。
ソースコード:
CSSコード: