高度なWebフォームの生成

FormFunctionFormObjectは簡単なWebフォームを生成するための簡潔なインターフェースを提供するが,ここではより高度なWebフォームを生成するのに必要な方法やオプションについて説明する.
概観の規則
FormFunctionFormObjectはオプションAppearanceRulesを取る.これはタイトル,および要素が各フィールドでどのように表示されるか等のフォームのさまざまな部分を指定するために使うことができる.

TitleとDescription

AppearanceRules"Title"および"Description"を使うと,フォームにタイトルやサブタイトルを加えることができる.

SubmitLabelとNextLabel

"SubmitLabel"を使うと,フォームの下部にあるボタンに表示されるテキストを変更することができる.
同様に"NextLabel"を使うと,複数ページに渡るフォームの最後以外のフィールドすべてのテキストをカスタマイズすることができる.

テキスト以外の値

AppearanceRulesのフィールドのほとんどは文字列である必要はない.

RequiredFieldIndicator

"RequiredFieldIndicator"は必須フィールドのラベルに関数を適用する.

ItemLayout

"ItemLayout"は,要素をどのように格子に表示するかを決めるために使うことができる.空の行や列は自動的に省略される.項目のレイアウトはレスポンシブである.つまりレイアウトがブラウザウィンドウの幅に応じて変化する.特に,項目のレイアウトは携帯端末のWebブラウザでは異なって見える場合がある.
デフォルトの"Horizontal"は2×2の格子である.
"Inline"は同じ行に置かれるすべての要素である.
"Vertical"は同一列に置かれるすべての要素である.
複数ページのフォーム
フォームは数ページに渡ることができる.第1引数の追加リストで複数ページのフォームを指定する.
最初のページ以外のすべてのページは純関数として指定することができる.そうすることにより,前のページに依存する新しいページができる.
このテクニックを使うと,新しいフィールドをプログラムで作成することができる.
別のページのフィールドが同じキーを持つことがある.この場合,最新の値が古いものを上書きする.
動的なフォーム
1つのフィールドが他のフィールドに依存するフォームや,両方のフィールドが同一ページに現れるフォームを定義すると便利なことがある.これはWolfram言語のテンプレート言語でTemplateSlot等のシンボルを使って行うことができる.
他のフィールドに依存するフィールドは,それらを表示する十分な情報がない限り自動的に隠されている.フィールドに依存する他のフィールドを持つフィールドは,記入されたら自動的に送信される.
Autosubmitting
フィールドをAutoSubmittingでラップすると,それが記入されたときにフォーム全体を自動的に送信させることができる.
最初のフィールドをタイプした後で2つ目のフィールドを選ぶとフォーム全体が送信され,2つ目のフィールドの下にエラーメッセージが表示される.
RepeatingElementとCompoundElement
フォームにさまざまな数のフィールドがあると便利なことがある.RepeatingElementを使うと,フィールドを繰り返すことができる.
RepeatingElementの第2引数を使うと,サブフィールドをその指標に依存させることができる.
CompoundElementRepeatingElementを使って,フィールドの表を作ることができる.
AppearanceRulesのオプション"AddLabel""DeleteLabel"を使うと,RepeatingElementのボタンのラベルをカスタマイズすることができる.