zoukankan      html  css  js  c++  java
  • 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() //不仅清空校验,还重置字段值

  • 相关阅读:
    VCL组件之编辑控件
    VCL组件之重要的公用属性
    Delphi Menu Designer(菜单设计器)之三
    Delphi Menu Designer(菜单设计器)之二
    VCL组件之TStrings
    在Google Earth上显示等高线
    [闲聊]恐怖的Google人物头像识别技术
    利用免费的GAE(Google App Engine)建立强大的Blog(micolog)网站
    推荐:Windows live writer 2009(附WIN2003下安装方法)
    Google apps注册以及解析ghs.google.com
  • 原文地址:https://www.cnblogs.com/myyouzi/p/13044914.html
Copyright © 2011-2022 走看看