Commit 5d076fc54a9f74e61676628cf68c8d97ec057b6c
Committed by
GitHub

Merge pull request #4537 from weidapao/fix_bug2
fix(FormItem): 解决required属性无法校验的bug
Showing
1 changed file
with
16 additions
and
8 deletions
Show diff stats
src/components/form/form-item.vue
@@ -150,15 +150,19 @@ | @@ -150,15 +150,19 @@ | ||
150 | methods: { | 150 | methods: { |
151 | setRules() { | 151 | setRules() { |
152 | let rules = this.getRules(); | 152 | let rules = this.getRules(); |
153 | - if (rules.length) { | 153 | + if (rules.length&&this.required) { |
154 | + return; | ||
155 | + }else if (rules.length) { | ||
154 | rules.every((rule) => { | 156 | rules.every((rule) => { |
155 | this.isRequired = rule.required; | 157 | this.isRequired = rule.required; |
156 | }); | 158 | }); |
157 | - this.$off('on-form-blur', this.onFieldBlur); | ||
158 | - this.$off('on-form-change', this.onFieldChange); | ||
159 | - this.$on('on-form-blur', this.onFieldBlur); | ||
160 | - this.$on('on-form-change', this.onFieldChange); | 159 | + }else if (this.required){ |
160 | + this.isRequired = this.required; | ||
161 | } | 161 | } |
162 | + this.$off('on-form-blur', this.onFieldBlur); | ||
163 | + this.$off('on-form-change', this.onFieldChange); | ||
164 | + this.$on('on-form-blur', this.onFieldBlur); | ||
165 | + this.$on('on-form-change', this.onFieldChange); | ||
162 | }, | 166 | }, |
163 | getRules () { | 167 | getRules () { |
164 | let formRules = this.form.rules; | 168 | let formRules = this.form.rules; |
@@ -174,10 +178,14 @@ | @@ -174,10 +178,14 @@ | ||
174 | return rules.filter(rule => !rule.trigger || rule.trigger.indexOf(trigger) !== -1); | 178 | return rules.filter(rule => !rule.trigger || rule.trigger.indexOf(trigger) !== -1); |
175 | }, | 179 | }, |
176 | validate(trigger, callback = function () {}) { | 180 | validate(trigger, callback = function () {}) { |
177 | - const rules = this.getFilteredRule(trigger); | 181 | + let rules = this.getFilteredRule(trigger); |
178 | if (!rules || rules.length === 0) { | 182 | if (!rules || rules.length === 0) { |
179 | - callback(); | ||
180 | - return true; | 183 | + if (!this.required) { |
184 | + callback(); | ||
185 | + return true; | ||
186 | + }else { | ||
187 | + rules = [{required: true}]; | ||
188 | + } | ||
181 | } | 189 | } |
182 | 190 | ||
183 | this.validateState = 'validating'; | 191 | this.validateState = 'validating'; |