diff --git a/src/field/index.js b/src/field/index.js index f2cd47702..0b27b22c0 100644 --- a/src/field/index.js +++ b/src/field/index.js @@ -183,7 +183,10 @@ export default createComponent({ if (rule.validator) { return runValidator(value, rule).then((result) => { - if (result === false) { + if (result && typeof result === 'string') { + state.validateFailed = true; + state.validateMessage = result; + } else if (result === false) { state.validateFailed = true; state.validateMessage = getRuleMessage(value, rule); } diff --git a/src/form/README.md b/src/form/README.md index 38c231603..b5a0c2ce1 100644 --- a/src/form/README.md +++ b/src/form/README.md @@ -63,11 +63,11 @@ export default { ### Validate Rules ```html - + + /1\d{10}/.test(val); + const validatorMessage = (val) => `${val} is invalid`; + const asyncValidator = (val) => new Promise((resolve) => { Toast.loading('Validating...'); @@ -125,6 +133,7 @@ export default { onFailed, validator, asyncValidator, + validatorMessage, }; }, }; @@ -491,7 +500,7 @@ export default { | --- | --- | --- | | required | Whether to be a required field | _boolean_ | | message | Error message | _string \| (value, rule) => string_ | -| validator | Custom validator | _(value, rule) => boolean \| Promise_ | +| validator | Custom validator | _(value, rule) => boolean \| string \| Promise_ | | pattern | Regex pattern | _RegExp_ | | trigger | When to validate the form,can be set to `onChange`、`onBlur` | _string_ | | formatter | Format value before validate | _(value, rule) => any_ | diff --git a/src/form/README.zh-CN.md b/src/form/README.zh-CN.md index c06783872..d27e47fe7 100644 --- a/src/form/README.zh-CN.md +++ b/src/form/README.zh-CN.md @@ -66,10 +66,10 @@ export default { ### 校验规则 -通过 `rules` 定义表单校验规则,可用字段见[下方表格](#/zh-CN/form#rule-shu-ju-jie-gou)。 +通过 `rules` 定义表单校验规则,所有可用字段见[下方表格](#/zh-CN/form#rule-shu-ju-jie-gou)。 ```html - + - + + +
- 提交 + + 提交 +
``` @@ -109,13 +116,17 @@ export default { value1: '', value2: '', value3: '', + value4: '', }); const pattern = /\d{6}/; // 校验函数返回 true 表示校验通过,false 表示不通过 const validator = (val) => /1\d{10}/.test(val); - // 异步校验函数返回 Promise + // 校验函数可以直接返回一段错误提示 + const validatorMessage = (val) => `${val} 不合法,请重新输入`; + + // 校验函数可以返回 Promise,实现异步校验 const asyncValidator = (val) => new Promise((resolve) => { Toast.loading('验证中...'); @@ -528,7 +539,7 @@ export default { | --- | --- | --- | | required | 是否为必选字段 | _boolean_ | | message | 错误提示文案 | _string \| (value, rule) => string_ | -| validator | 通过函数进行校验 | _(value, rule) => boolean \| Promise_ | +| validator | 通过函数进行校验 | _(value, rule) => boolean \| string \| Promise_ | | pattern | 通过正则表达式进行校验 | _RegExp_ | | trigger | 本项规则的触发时机,可选值为 `onChange`、`onBlur` | _string_ | | formatter | 格式化函数,将表单项的值转换后进行校验 | _(value, rule) => any_ | diff --git a/src/form/demo/ValidateRules.vue b/src/form/demo/ValidateRules.vue index 0019c16b5..b1cfe4813 100644 --- a/src/form/demo/ValidateRules.vue +++ b/src/form/demo/ValidateRules.vue @@ -1,6 +1,6 @@