diff --git a/src/field/index.js b/src/field/index.js index dc85c7d77..9db45eb60 100644 --- a/src/field/index.js +++ b/src/field/index.js @@ -157,6 +157,14 @@ export default createComponent({ if (rule.required && this.formValueEmpty) { messages.push(rule.message); } + + if (rule.validator) { + const result = rule.validator(this.formValue); + + if (!result) { + messages.push(rule.message); + } + } }); if (messages.length) { diff --git a/src/form/README.md b/src/form/README.md index 94e1d48e5..77a687a8c 100644 --- a/src/form/README.md +++ b/src/form/README.md @@ -14,7 +14,7 @@ Vue.use(Form); ### Basic Usage ```html - + + + +
+ 提交 +
+
+``` + +```js +export default { + data() { + this.rules = [ + { required: true, message: '请输入手机号' }, + { validator: val => /1\d{10}/.test(val), message: '手机号格式错误' }, + ]; + return { value: '' }; + }, methods: { onSubmit(values) { console.log('submit', values); diff --git a/src/form/demo/Validate.vue b/src/form/demo/Validate.vue deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/form/demo/ValidateRules.vue b/src/form/demo/ValidateRules.vue new file mode 100644 index 000000000..689bb7f31 --- /dev/null +++ b/src/form/demo/ValidateRules.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/form/demo/index.vue b/src/form/demo/index.vue index c2aaaf767..3f7794103 100644 --- a/src/form/demo/index.vue +++ b/src/form/demo/index.vue @@ -1,18 +1,21 @@ diff --git a/src/form/test/__snapshots__/demo.spec.js.snap b/src/form/test/__snapshots__/demo.spec.js.snap index 7f37ab9de..4680be9d5 100644 --- a/src/form/test/__snapshots__/demo.spec.js.snap +++ b/src/form/test/__snapshots__/demo.spec.js.snap @@ -19,6 +19,17 @@ exports[`renders demo correctly 1`] = `
+
+
+
+
手机号
+
+
+
+
+
+
+
@@ -150,7 +161,7 @@ exports[`renders demo correctly 1`] = `
-
+