# Form ### Install ```js import Vue from 'vue'; import { Form } from 'vant'; Vue.use(Form); ``` ## Usage ### Basic Usage ```html
Submit
``` ```js export default { data() { return { username: '', password: '', }; }, methods: { onSubmit(values) { console.log('submit', values); }, }, }; ``` ### Validate Rules ```html
Submit
``` ```js import { Toast } from 'vant'; export default { data() { return { value1: '', value2: '', value3: '', pattern: /\d{6}/, }; }, methods: { validator(val) { return /1\d{10}/.test(val); }, asyncValidator(val) { return new Promise((resolve) => { Toast.loading('Validating...'); setTimeout(() => { Toast.clear(); resolve(/\d{6}/.test(val)); }, 1000); }); }, onFailed(errorInfo) { console.log('failed', errorInfo); }, }, }; ``` ### Field Type - Switch ```html ``` ```js export default { data() { return { switchChecked: false, }; }, }; ``` ### Field Type - Checkbox ```html ``` ```js export default { data() { return { checkbox: false, checkboxGroup: [], }; }, }; ``` ### Field Type - Radio ```html ``` ```js export default { data() { return { radio: '1', }; }, }; ``` ### Field Type - Stepper ```html ``` ```js export default { data() { return { stepper: 1, }; }, }; ``` ### Field Type - Rate ```html ``` ```js export default { data() { return { rate: 3, }; }, }; ``` ### Field Type - Slider ```html ``` ```js export default { data() { return { slider: 50, }; }, }; ``` ### Field Type - Uploader ```html ``` ```js export default { data() { return { uploader: [{ url: 'https://img.yzcdn.cn/vant/leaf.jpg' }], }; }, }; ``` ### Field Type - Picker ```html ``` ```js export default { data() { return { value: '', columns: ['Delaware', 'Florida', 'Georqia', 'Indiana', 'Maine'], showPicker: false, }; }, methods: { onConfirm(value) { this.value = value; this.showPicker = false; }, }, }; ``` ### Field Type - DatetimePicker ```html ``` ```js export default { data() { return { value: '', showPicker: false, }; }, methods: { onConfirm(time) { this.value = time; this.showPicker = false; }, }, }; ``` ### Field Type - Area ```html ``` ```js export default { data() { return { value: '', showArea: false, areaList: {}, }; }, methods: { onConfirm(values) { this.value = values.map((item) => item.name).join('/'); this.showArea = false; }, }, }; ``` ### Field Type - Calendar ```html ``` ```js export default { data() { return { value: '', showCalendar: false, }; }, methods: { onConfirm(date) { this.value = `${date.getMonth() + 1}/${date.getDate()}`; this.showCalendar = false; }, }, }; ``` ## API ### Props | Attribute | Description | Type | Default | | --- | --- | --- | --- | | label-width | Field label width | _number \| string_ | `6em` | | label-align | Field label align, can be set to `center` `right` | _string_ | `left` | | input-align | Field input align, can be set to `center` `right` | _string_ | `left` | | error-message-align | Error message align, can be set to `center` `right` | _string_ | `left` | | validate-trigger `v2.5.2` | When to validate the form,can be set to `onChange`、`onSubmit` | _string_ | `onBlur` | | colon | Whether to display colon after label | _boolean_ | `false` | | validate-first | Whether to stop the validation when a rule fails | _boolean_ | `false` | | scroll-to-error `v2.5.2` | Whether to scroll to the error field when validation failed | _boolean_ | `false` | | show-error `v2.6.0` | Whether to highlight input when validation failed | _boolean_ | `true` | | show-error-message `v2.5.8` | Whether to show error message when validation failed | _boolean_ | `true` | | submit-on-enter `v2.8.3` | Whether to submit form on enter | _boolean_ | `true` | ### Data Structure of Rule | Key | Description | Type | | --- | --- | --- | | required | Whether to be a required field | _boolean_ | | message `v2.5.3` | Error message | _string \| (value, rule) => string_ | | validator `v2.5.3` | Custom validator | _(value, rule) => boolean \| Promise_ | | pattern `v2.5.3` | Regex pattern | _RegExp_ | | trigger `v2.5.2` | When to validate the form,can be set to `onChange`、`onBlur` | _string_ | | formatter `v2.5.3` | Format value before validate | _(value, rule) => any_ | ### Events | Event | Description | Arguments | | --- | --- | --- | | submit | Triggered after submitting the form and validation passed | _values: object_ | | failed | Triggered after submitting the form and validation failed | _errorInfo: { values: object, errors: object[] }_ | ### Methods Use [ref](https://vuejs.org/v2/api/#ref) to get Form instance and call instance methods | Name | Description | Attribute | Return value | | --- | --- | --- | --- | | submit | Submit form | - | - | | validate | Validate form | _name?: string_ | _Promise_ | | resetValidation | Reset validation | _name?: string_ | - | | scrollToField `v2.8.3` | Scroll to field | _name: string, alignToTop: boolean_ | - | ### Slots | Name | Description | | ------- | ------------ | | default | Form content |