element-ui 表单校验,el-select校验失效问题

form表单验证时,遇到了校验失效问题,有值的情况下,校验规则并没有对应消失,检查了几个容易出错的地方:1、:model="addForm" 用model绑定表单,而不是v-model,没问题

 
 

2、需要添加校验的对应字段,是否添加了prop属性,ok没问题

  
                
                  
                

3、检查rules,里面校验提示的事件是否正确,发现了问题,之前el-select,trigger时候用的“blur”,导致失效,现在 el-select 统一改为"change"

  rules: {
      
        ruleCode: [
          { required: true, message: `规则编码不能为空`, trigger: "blur" }
        ],
        menuCode: [
          { required: true, message: `对应菜单不能为空`, trigger: "change" }
        ],
        tableName: [
          { required: true, message: `对应表不能为空`, trigger: "change" }
        ],
        fieldName: [
          { required: true, message: `对应字段不能为空`, trigger: "change" }
        ]
      },

奇怪的是,我表单里面有三个el-select,其他两个生效了,只有另外一个没有生效,也是醉了,于是我请教了大佬,大佬告诉我,form表单里面,el-select会出现失效的情况,尤其是我这个el-foem-item 里面又嵌套了el-row 

   
              
                
                  
                
              
            

,层级太深了,form检测不到addform的变化,这个时候要么change事件里面强制更新dom触发(视图更新)

change(val){
this.$set(this.addForm,'tableName',val)
this.$forceUpdate()
}

,要么再change事件里面对form表单绑定的数据进行拷贝 this.addForm = JSON.parse(JSON.stringify(this.addForm));或者  像这样描述下    this.addForm = { ...this.addForm };

change(val){
this.addForm={...this.addForm}
}

我遇到的问题,通过第二种方式:拷贝或者描述生效的,以上是我近期遇到的bug修复的方法,大家可以借鉴一下,如果大家有更好的方法,可以分享哦

你可能感兴趣的:(elementui,vue.js,javascript)