表单中,有的校验元素不是标准的输入框,如: bash
这种场景下,el-form-item上prop指定的值已经变化后,不会触发从新校验,致使选中以后,错误信息不消失markdown
跟踪el的源码,发现缘由是,el本身的表单输入元素在值改变后,会触动去触发上层的el-form-item组件的 ‘el.form.change’事件,el-from-item接收到此事件后,会从新校验,而自定义的输入组件改变值以后,并不会触发el-form-item上的‘el.form.change’事件,致使不会从新校验app
对须要特殊输入组件的绑定值,进行watch,监听到变化后,用代码去触发上层el-form-item的‘el.form.change'事件this
<el-form-item label="选择征信报告" prop="creditReportId" v-if="!infoDisabled" ref="creditReportItem"> <el-button v-show="applyModel.creditReportId==''||applyModel.creditReportId==null" type="text" @click="checkCreditReport('apply')" >选择</el-button> <el-button v-show="!(applyModel.creditReportId==''||applyModel.creditReportId==null)" type="text" @click="previewReportFlag=true;" >查看征信报告</el-button> <el-button v-show="!(applyModel.creditReportId==''||applyModel.creditReportId==null)" type="text" @click="checkCreditReport('apply')" >变动征信报告</el-button> </el-form-item> 复制代码
'applyModel.creditReportId'(){ this.$refs.creditReportItem.$emit('el.form.change'); //非el的输入组件,值变化时不会触发el-from-item的从新校验,须要手动触发el.form.change事件 } 复制代码
注意: 这个值的rule中,trigger必须是changespa