Skip to content

Commit

Permalink
feat(Form): resetValidation support multiple names (#7811)
Browse files Browse the repository at this point in the history
  • Loading branch information
chenjiahan committed Dec 24, 2020
1 parent d92d29c commit 1fac5c5
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/form/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ Use [ref](https://vuejs.org/v2/api/#ref) to get Form instance and call instance
| --- | --- | --- | --- |
| submit | Submit form | - | - |
| validate | Validate form | _name?: string \| string[]_ | _Promise_ |
| resetValidation | Reset validation | _name?: string_ | - |
| resetValidation | Reset validation | _name?: string \| string[]_ | - |
| scrollToField `v2.8.3` | Scroll to field | _name: string, alignToTop: boolean_ | - |

### Slots
Expand Down
4 changes: 2 additions & 2 deletions src/form/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -509,8 +509,8 @@ export default {
| 方法名 | 说明 | 参数 | 返回值 |
| --- | --- | --- | --- |
| submit | 提交表单,与点击提交按钮的效果等价 | - | - |
| validate | 验证表单,支持传入 `name` 来验证单个或多个表单项 | _name?: string \| string[]_ | _Promise_ |
| resetValidation | 重置表单项的验证提示,支持传入 `name` 来重置单个表单项 | _name?: string_ | - |
| validate | 验证表单,支持传入 `name` 来验证单个或部分表单项 | _name?: string \| string[]_ | _Promise_ |
| resetValidation | 重置表单项的验证提示,支持传入 `name` 来重置单个或部分表单项 | _name?: string \| string[]_ | - |
| scrollToField `v2.8.3` | 滚动到对应表单项的位置,默认滚动到顶部,第二个参数传 false 可滚动至底部 | _name: string, alignToTop: boolean_ | - |

### Slots
Expand Down
11 changes: 7 additions & 4 deletions src/form/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,13 @@ export default createComponent({

// @exposed-api
resetValidation(name) {
this.fields.forEach((item) => {
if (!name || item.name === name) {
item.resetValidation();
}
if (name && !Array.isArray(name)) {
name = [name];
}

const fields = this.getFieldsByNames(name);
fields.forEach((item) => {
item.resetValidation();
});
},

Expand Down
13 changes: 13 additions & 0 deletions src/form/test/methods.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,19 @@ test('resetValidation method - reset all fields', (done) => {
});
});

test('resetValidation method - reset two fields', (done) => {
const wrapper = mountSimpleRulesForm({
mounted() {
this.$refs.form.validate().catch(() => {
this.$refs.form.resetValidation(['A', 'B']);
const errors = wrapper.findAll('.van-field__error-message');
expect(errors.length).toEqual(0);
done();
});
},
});
});

test('resetValidation method - reset one field', (done) => {
const wrapper = mountSimpleRulesForm({
mounted() {
Expand Down
2 changes: 1 addition & 1 deletion types/form.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export class Form extends VanComponent {

validate(name?: string | string[]): Promise<void>;

resetValidation(name?: string): void;
resetValidation(name?: string | string[]): void;

scrollToField(name: string, options?: boolean | ScrollIntoViewOptions): void;
}

0 comments on commit 1fac5c5

Please sign in to comment.