• vue+Elementui表单验证基本使用


    Elementuid的Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可。

    写个简单的例子:

    1.基本用法:

    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
      <el-form-item label="活动名称" prop="name">
        <el-input v-model="ruleForm.name"></el-input>
      </el-form-item>  
    </el-form>
    <script>
      export default {
        data() {
          return {
            ruleForm: {
              name: '',
            },
            rules: {
              name: [
                { required: true, message: '请输入活动名称', trigger: 'blur' },
                { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
              ]
            }
          };
        }
      }
    </script>

    如果它不止这种简单的校验,可以通过validator另外再加方法:

    <script>
      export default {
        data() {
          return {
            ruleForm: {
              name: '',
            },
            rules: {
              name: [
                { required: true, message: '请输入活动名称', trigger: 'blur' },
                { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' },
           { validator: this.otherRules, trigger: 'blur' }
    
              ]
            }
          };
        },
       methods(){    
         otherRules(rule, val, callback) {
            if () {
             callback(new Error(xxx'))
           } else if () {
             callback(new Error('xxxxx'))
           } else {
            callback()
          }
        }
      }
      }
    </script>
    

     注:像长度这种校验也可以放到validator对应的方法里,但是不能为空的校验最好与它分开(不然有时候错误提示会是英文的形式)

    2.规则校验:

    submit(){
      this.$refs.ruleFrom.validate(valid => {
        if(valid){
           //校验通过后的操作
        }
      })
    }
    

     有时候我们并不想整个表单一起校验,只想校验其中某一个:

    submit(){
      this.$refs.ruleFrom.validateField('name',valid => {
        if(!valid){
           //校验通过后的操作
        }
      })
    }
    

    3.清空校验

    (1)初始化的时候就出现了错误验证。在表单初始赋值后,加如下代码:(按道理讲,此处应该加clearValidate(),但是并不起作用,,,根据自身情况定吧*_*)

    this.$refs.ruleForm.resetFields()
    

     (2)如果有一个审批意见选项,同意的时候就进行表单验证,不同意的时候就直接提交,在选择审批意见时需要先清空表单验证:

    this.$refs.ruleForm.clearValidate();
    this.$refs.ruleForm.clearValidate(['name']);//如果清除某个表单的校验
    //或者在el-form-item层加ref
    <el-form-item ref="name">...</el-form-item>
    this.$refs.name.clearValidate() 

    总结一下二者的区别:

    clearValidate() //仅清空校验

    resetFields() //不仅清空校验,还重置字段值

  • 相关阅读:
    CFgym102394I
    Infinite Fraction Path (后缀数组)
    2016ACM/ICPC亚洲区沈阳站-重现赛
    2sat学习笔记
    bzoj4176
    bzoj3309
    6C
    3U
    3T
    3R
  • 原文地址:https://www.cnblogs.com/myyouzi/p/13044914.html
Copyright © 2020-2023  润新知