## フォーム フォームは `input`, `radio`, `select`, `checkbox` などから構成されています。フォームを使うと、データを収集したり、検証したり、送信したりすることができます。 ### 基本フォーム これには、`input`, `select`, `radio`, `checkbox` などのあらゆる種類の入力項目が含まれます。 :::demo 各 `form` コンポーネントには、入力項目のコンテナとなる `form-item` フィールドが必要です。 ```html - Create Cancel ``` ::: :::tip [W3C](https://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2) は規制しているのは > フォーム内に1つの単一行テキスト入力フィールドしかない場合、ユーザエージェントは、そのフィールドでのEnterをフォームの送信要求として受け入れるべきである。 この動作を防ぐには、`` に `@submit.native.prevent` を追加します。 ::: ### インラインフォーム 縦のスペースが限られていて、比較的シンプルな形の場合は、一行にまとめることができます。 :::demo `inline` 属性を `true` に設定すると、フォームがインラインになります。 ```html Query ``` ::: ### アライメント デザインに応じて、ラベル要素を揃える方法はいくつかあります。 :::demo `label-position` 属性はラベルの配置を決定します。`top`に設定すると、ラベルはフォームフィールドの一番上に配置されます。 ```html Left Right Top
``` ::: ### バリデーション フォームコンポーネントを使用すると、データを検証してエラーを発見したり修正したりすることができます。 :::demo `Form` コンポーネントに `rules` 属性を追加して検証ルールを渡し、`Form-Item`に `prop` 属性を検証が必要な特定のキーとして設定するだけです。詳細は [async-validator](https://github.com/yiminghe/async-validator) を参照してください。 ```html - Create Reset ``` ::: ### カスタムバリデーションルール この例では、独自の検証ルールをカスタマイズして、2ファクタのパスワード検証を完了させる方法を示しています。 :::demo ここでは、検証結果をアイコンとして反映させるために `status-icon` を用いる。 ```html Submit Reset ``` ::: :::tip カスタムバリデートコールバック関数を呼び出す必要があります。より高度な使い方は [async-validator](https://github.com/yiminghe/async-validator) を参照してください。 ::: ### フォーム項目を動的に削除または追加 :::demo フォームコンポーネントにすべてのバリデーションルールを一度に渡すことに加えて、単一のフォームフィールドにバリデーションルールを動的に渡したり削除したりすることもできます。 ```html Delete Submit New domain Reset ``` ::: ### ナンバーの検証(Number Validate) :::demo Number Validateでは、入力された `v-model` バインディングに `.number` という修飾子を追加する必要がありますが、これは文字列の値をVuejsが提供する数値に変換するために使われます。 ```html Submit Reset ``` ::: :::tip `el-form-item` が別の `el-form-item` に入れ子になっている場合、そのラベルの幅は `0` になります。必要であれば、その `el-form-item` に `label-width` を設定することもできる。 ::: ### サイズコントロール フォームのすべてのコンポーネントはそのフォームから `size` 属性を継承します。同様に、FormItem にも `size` 属性があります。 :::demo それでも、コンポーネントのサイズを From や FormIten から継承させたくない場合は、各コンポーネントの `size` を微調整することができます。 ```html - Create Cancel ``` ::: ### フォーム属性 | Attribute | Description | Type | Accepted Values | Default | | ---- | ----| ---- | ---- | ---- | | model| フォームコンポーネントのデータ | object | — | — | | rules | フォームのバリデーションルール | object | — | — | | inline | フォームがインラインであるかどうか | boolean | — | false | | label-position | ラベルの位置。’left'、’right’ もしくは`label-width`が設定されている場合は propも必要です。 | string | left / right / top | right | | label-width | ラベルの幅、例えば '50px'。直接の子フォーム項目はすべてこの値を継承します。Width `auto` がサポートされています。 | string | — | — | | label-suffix | ラベルの接尾辞 | string | — | — | | hide-required-asterisk | 必須フィールドのラベルの横に赤いアスタリスク(星)を付けるかどうか | boolean | — | false | | show-message | エラーメッセージを表示するかどうか | boolean | — | true | | inline-message | エラーメッセージをフォーム項目とインラインで表示するかどうか。 | boolean | — | false | | status-icon | バリデーション結果を示すアイコンを表示するかどうか | boolean | — | false | | validate-on-rule-change | `rules` propが変更されたときにバリデーションをトリガするかどうか。 | boolean | — | true | | size | コンポーネントのサイズを制御する形式 | string | medium / small / mini | — | | disabled | このフォームのすべてのコンポーネントを無効にするかどうかを指定します。true に設定されている場合、内部のコンポーネントの `disabled` プロップで上書きすることはできません。 | boolean | — | false | ### フォームメソッド | Method | Description | Parameters | | ---- | ---- | ---- | | validate | バリデートはフォーム全体を検証します。パラメータとしてコールバックを受け取ります。バリデーションが通過したかどうかを示すブール値と、バリデーションに失敗したすべてのフィールドを含むオブジェクトです。コールバックが省略された場合はpromiseを返します。 | Function(callback: Function(boolean, object)) | | validateField | フォーム項目を検証する | Function(props: string \| array, callback: Function(errorMessage: string)) | | resetFields | すべてのフィールドをリセットし、検証結果を削除します。 | — | | clearValidate | 特定のフィールドのバリデーションメッセージをクリアします。パラメータはprop名、または検証メッセージが削除されるフォーム項目のprop名の配列です。省略された場合、すべてのフィールドのバリデーションメッセージがクリアされます。 | Function(props: string \| array) | ### フォームイベント | Event Name | Description | Parameters | |----------- |------------ |----------- | | validate | フォーム項目バリデーション後にトリガされます。 | prop name of the form item being validated, whether validation is passed and the error message if not | ### フォームアイテム属性 | Attribute | Description | Type | Accepted Values | Default | | ---- | ----| ---- | ---- | ---- | | prop | `model` のキーです。validateメソッドとresetFieldsメソッドを利用する際には、この属性が必須です。 | string | keys of model that passed to `form` | | label | ラベル | string | — | — | | label-width | ラベルの幅。Width `auto` がサポートされています。 | string | — | — | | required | フィールドが必須かどうか、省略された場合はバリデーションルールによって決定されます。 | boolean | — | false | | rules | フォームのバリデーションルール | object | — | — | | error | フィールドのエラーメッセージ、値を設定すると、フィールドはエラーを検証し、このメッセージをすぐに表示します。 | string | — | — | | show-message | エラーメッセージを表示するかどうか | boolean | — | true | | inline-message | インラインスタイルバリデートメッセージ | boolean | — | false | | size | フォームアイテムのコンポーネントのサイズを制御します。 | string | medium / small / mini | - | ### フォームアイテムスロット | Name | Description | |------|--------| | — | フォームアイテムの内容 | | label | ラベルの内容 | ### フォームアイテムのスコープスロット | Name | Description | |---------------|-------------| | error | Custom content to display validation message. The scope parameter is { error } | ### フォームアイテムのメソッド | Method | Description | Parameters | | ---- | ---- | ---- | | resetField | 現在のフィールドをリセットしてバリデーション結果を削除する | — | | clearValidate | フィールドのバリデーションステータスを削除する | - |