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