解决方案② el-from-item上是否有加prop,并确定prop是不是和编写的规则相同 _elementui表单校验规则">
当前位置:   article > 正文

vue element ui From表单校验不生效问题解决_elementui表单校验规则不起作用

elementui表单校验规则不起作用

vue element ui From表单校验不生效问题解决


仅供参考 自我记录.

解决方案① el-from上要使用:model不要使用v-model

 <el-form ref="ruleForm" :model="testForm" label-width="100px" :rules="rules">
  • 1

解决方案② el-from-item上是否有加prop,并确定prop是不是和编写的规则相同

  <el-form-item label="活动名称" prop="name">
    <el-input v-model="testForm.name"></el-input>
  </el-form-item>
  // 校验规则 prop name相同
   rules: {
    	name: [
            { required: true, message: '请输入活动名称', trigger: 'blur' },
            { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
          ]
       }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

解决方案③$refs[formName]$refs.formName注意事项 前者提交的时候要传参@click="submitForm('ruleForm')" 不然不生效

//官方的写法是$refs[formName]  
 <el-form ref="ruleForm" :model="testForm" label-width="100px" :rules="rules">
  <el-form-item label="活动名称" prop="name">
    <el-input v-model="testForm.name"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
  </el-form-item>
 <el-form>
 data() {
    return {
    testForm:{
        name:'',
      },
   rules: {
    	name: [
            { required: true, message: '请输入活动名称', trigger: 'blur' },
            { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
          ]
       }
    }
  },
 methods: {
    // 第一种方法要接收参数 并且$refs[formName]
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
//网上也有用 $refs.formName 第二种写法的 
 <el-form ref="ruleForm" :model="testForm" label-width="100px" :rules="rules">
  <el-form-item label="活动名称" prop="name">
    <el-input v-model="testForm.name"></el-input>
  </el-form-item>
  <el-form-item>
  // 不需要传参 第二种方式
    <el-button type="primary" @click="submitForm()">提交</el-button>
  </el-form-item>
 <el-form>
 data() {
    return {
    testForm:{
        name:'',
      },
   rules: {
    	name: [
            { required: true, message: '请输入活动名称', trigger: 'blur' },
            { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
          ]
       }
    }
  },
 methods: {
    // 第二种方法不需要接收参数 并且$refs.formName
      submitForm() {
        this.$refs.formName.validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

解决方案④网上有人说 未在data里面声明初始数据也会报错(未复现.解决方案仅供参考)

  <el-form-item label="活动名称" prop="name">
    <el-input v-model="testForm.name"></el-input>
  </el-form-item>
 data() {
    return {
  // 校验规则 prop name相同
    testForm:{
        name:'',//意思是这个位置没有声明 name 也会不生效 我测试了一下不声明也生效 仅供参考
      },
   rules: {
    	name: [
            { required: true, message: '请输入活动名称', trigger: 'blur' },
            { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
          ]
       }
    }
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

平时遇到的一些小问题 自我记录 有补充的地方希望大家多多提出意见 共同学习!
如有转载 请备注原文地址!

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签