@@ -84,6 +84,7 @@ export const FormItemProps = {
84
84
required : PropTypes . bool ,
85
85
validateFirst : PropTypes . bool ,
86
86
validateStatus : PropTypes . oneOf ( [ '' , 'success' , 'warning' , 'error' , 'validating' ] ) ,
87
+ validateTrigger : PropTypes . oneOfType ( [ PropTypes . string , PropTypes . array ] ) ,
87
88
} ;
88
89
89
90
export default {
@@ -113,7 +114,6 @@ export default {
113
114
errors : [ ] ,
114
115
} ;
115
116
} ,
116
-
117
117
computed : {
118
118
fieldName ( ) {
119
119
return this . name || this . prop ;
@@ -153,6 +153,14 @@ export default {
153
153
}
154
154
return isRequired || this . required ;
155
155
} ,
156
+ mergedValidateTrigger ( ) {
157
+ let validateTrigger =
158
+ this . validateTrigger !== undefined
159
+ ? this . validateTrigger
160
+ : this . FormContext . validateTrigger ;
161
+ validateTrigger = validateTrigger === undefined ? 'change' : validateTrigger ;
162
+ return toArray ( validateTrigger ) ;
163
+ } ,
156
164
} ,
157
165
watch : {
158
166
validateStatus ( val ) {
@@ -189,10 +197,10 @@ export default {
189
197
if ( triggerName ) {
190
198
filteredRules = filteredRules . filter ( rule => {
191
199
const { trigger } = rule ;
192
- if ( ! trigger ) {
200
+ if ( ! trigger && ! this . mergedValidateTrigger . length ) {
193
201
return true ;
194
202
}
195
- const triggerList = toArray ( trigger ) ;
203
+ const triggerList = toArray ( trigger || this . mergedValidateTrigger ) ;
196
204
return triggerList . includes ( triggerName ) ;
197
205
} ) ;
198
206
}
@@ -226,7 +234,9 @@ export default {
226
234
let formRules = this . FormContext . rules ;
227
235
const selfRules = this . rules ;
228
236
const requiredRule =
229
- this . required !== undefined ? { required : ! ! this . required , trigger : 'change' } : [ ] ;
237
+ this . required !== undefined
238
+ ? { required : ! ! this . required , trigger : this . mergedValidateTrigger }
239
+ : [ ] ;
230
240
const prop = getPropByPath ( formRules , this . namePath ) ;
231
241
formRules = formRules ? prop . o [ prop . k ] || prop . v : [ ] ;
232
242
const rules = [ ] . concat ( selfRules || formRules || [ ] ) ;
@@ -236,19 +246,6 @@ export default {
236
246
return rules . concat ( requiredRule ) ;
237
247
}
238
248
} ,
239
- getFilteredRule ( trigger ) {
240
- const rules = this . getRules ( ) ;
241
- return rules
242
- . filter ( rule => {
243
- if ( ! rule . trigger || trigger === '' ) return true ;
244
- if ( Array . isArray ( rule . trigger ) ) {
245
- return rule . trigger . indexOf ( trigger ) > - 1 ;
246
- } else {
247
- return rule . trigger === trigger ;
248
- }
249
- } )
250
- . map ( rule => ( { ...rule } ) ) ;
251
- } ,
252
249
onFieldBlur ( ) {
253
250
this . validateRules ( { triggerName : 'blur' } ) ;
254
251
} ,
0 commit comments