element-ui 表单input为readonly时如何进行校验


使用element-ui 进行表单验证时,对于绑定v-model赋值的input框,没有触发change、blur事件,因此表单提交时验证不通过。解决办法如下:

<template>
  <div>
    <el-form
      :model="ruleForm"
      :rules="rules"
      ref="ruleForm"
      label-width="100px">
      <el-form-item label="id" prop="id">
        <el-input id="inputid" v-model="ruleForm.id"></el-input>
      </el-form-item>
      <el-form-item label="活动名称" prop="name">
        <el-input v-model="ruleForm.name"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  data () {
    return {
      ruleForm: {
        name: '',
        id: ''
      },
      rules: {
        name: [
          { required: true, message: '请输入活动名称', trigger: 'blur' },
          { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
        ],
        id: [
          { required: true, message: 'id不能为空', trigger: 'change' }
        ]
      }
    }
  },
  methods: {
    doAddChange () {
      const $element = document.getElementById('inputid')
      $element.addEventListener('change', () => { $element.value = 'value' }, false)
    },
    submitForm (formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert('submit!')
        } else {
          console.log('error submit!!')
          return false
        }
      })
    },
    resetForm (formName) {
      this.$refs[formName].resetFields()
    }
  }
}
</script>

input校验规则trigger设置为change赋值时,执行doAddChange 方法为input框添加change事件,这样就能触发校验了


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM