@@ -84,6 +84,7 @@ export const FormItemProps = {
8484 required : PropTypes . bool ,
8585 validateFirst : PropTypes . bool ,
8686 validateStatus : PropTypes . oneOf ( [ '' , 'success' , 'warning' , 'error' , 'validating' ] ) ,
87+ validateTrigger : PropTypes . oneOfType ( [ PropTypes . string , PropTypes . array ] ) ,
8788} ;
8889
8990export default {
@@ -113,7 +114,6 @@ export default {
113114 errors : [ ] ,
114115 } ;
115116 } ,
116-
117117 computed : {
118118 fieldName ( ) {
119119 return this . name || this . prop ;
@@ -153,6 +153,14 @@ export default {
153153 }
154154 return isRequired || this . required ;
155155 } ,
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+ } ,
156164 } ,
157165 watch : {
158166 validateStatus ( val ) {
@@ -189,10 +197,10 @@ export default {
189197 if ( triggerName ) {
190198 filteredRules = filteredRules . filter ( rule => {
191199 const { trigger } = rule ;
192- if ( ! trigger ) {
200+ if ( ! trigger && ! this . mergedValidateTrigger . length ) {
193201 return true ;
194202 }
195- const triggerList = toArray ( trigger ) ;
203+ const triggerList = toArray ( trigger || this . mergedValidateTrigger ) ;
196204 return triggerList . includes ( triggerName ) ;
197205 } ) ;
198206 }
@@ -226,7 +234,9 @@ export default {
226234 let formRules = this . FormContext . rules ;
227235 const selfRules = this . rules ;
228236 const requiredRule =
229- this . required !== undefined ? { required : ! ! this . required , trigger : 'change' } : [ ] ;
237+ this . required !== undefined
238+ ? { required : ! ! this . required , trigger : this . mergedValidateTrigger }
239+ : [ ] ;
230240 const prop = getPropByPath ( formRules , this . namePath ) ;
231241 formRules = formRules ? prop . o [ prop . k ] || prop . v : [ ] ;
232242 const rules = [ ] . concat ( selfRules || formRules || [ ] ) ;
@@ -236,19 +246,6 @@ export default {
236246 return rules . concat ( requiredRule ) ;
237247 }
238248 } ,
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- } ,
252249 onFieldBlur ( ) {
253250 this . validateRules ( { triggerName : 'blur' } ) ;
254251 } ,
0 commit comments