メインコンテンツへスキップ
Dashboard > Actions > Forms > Custom field
カスタムコンポーネントを使用すると、フォームの外観や操作性を拡張したり、JavaScriptやHTML、CSSを用いて強力なロジックを追加したりできます。 カスタムフィールドには、フロントエンドやバックエンドの変数を追加し、フォーカスやぼかしなどをの共通イベントを処理するなど、フォームにデータを渡すための内部メソッドがあります。 カスタムフィールドは以下の作成に使用できます。
  • カスタムデータ構造のあるフィールド
    • :オブジェクト、文字列配列
  • サードパーティーのウィジェットを使用するフィールド
    • :Google Addressのオートコンプリート
  • 他のフィールドを表示または非表示するロジックのあるフィールド
  • 値の取得に外部のAPIが必要なフィールド
カスタムフィールドを使用するには、カスタムドメインを有効化する必要があります。カスタムフィールドのあるフォームをカスタムドメインの外部でレンダリングすると、エラーが表示されます。

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

カスタムフィールドには以下の設定があります。

Params

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

ソースコード

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

JSONスキーマ

カスタムフィールドはデフォルトで任意の値形式を受け付けます。ただし、JSONスキーマを使用すると、サーバー側で値を検証することができます。
複雑な検証要件に対応させるには、フローを使用することができます。

CSS

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

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

以下のハンドラーを使用すると、フィールドにカスタムの動作を追加することができます。

init(params?)

フィールドの作成時に一度だけ呼び出され、Params設定で構成済みのprams値を渡します。 HTML要素、文字列または空の値を返します。

update(params?)

ユーザーがフォームにある同じ手順を再表示したときに呼び出されます。 このオプションは、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()

現在のフォームの一意の識別子を返します。

context.form.getRoot()

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

context.form.goForward()

1つ次のフォームの手順に移動します。

context.form.goPrevious()

1つ前のフォームの手順に移動します。

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コード