美文网首页
el-form的各种校验姿态

el-form的各种校验姿态

作者: meng_281e | 来源:发表于2018-09-19 16:38 被阅读0次
1.基础姿势/自定义姿势
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px">
  <el-form-item label="活动名称" prop="name">
    <el-input v-model="ruleForm.name"></el-input>
  </el-form-item>
 <el-form-item label="年龄" prop="age">
    <el-input v-model.number="ruleForm.age"></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>
<script>
  var checkAge = (rule, value, callback) => {
    //console.log(rule.max_age)
    if (!value) {
       return callback(new Error('年龄不能为空'));
     }
     if (!Number.isInteger(value)) {
         callback(new Error('请输入数字值'));
      } else {
        if (value < rule.max_age) {
          callback(new Error('必须年满18岁'));
        } else {
          callback();
        }
      }
  };
  export default {
    data() {
      return {
        ruleForm: {
          name: '',
          age:''
        },
        rules: {
          name: [
            { required: true, message: '请输入活动名称', trigger: 'blur' },
            { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
          ],
          age: [
            {max_age:18, validator: checkAge, trigger: 'blur' }// checkAge自定义规则函数
          ]
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!')
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }
  }
</script>

在el-form上绑定rules,rlues为校验规则,在el-form-item上绑定对应的prop。
自定义规则,validator:checkAge,自定义规则的函数。
不啰嗦,详细的可查看element文档http://element-cn.eleme.io/#/zh-CN/component/form

2.行间校验

<el-form :model="numberValidateForm" ref="numberValidateForm" label-width="100px" class="demo-ruleForm">
  <el-form-item
    label="年龄"
    prop="age"
    :rules="[
      { required: true, message: '年龄不能为空'},
      { type: 'number', message: '年龄必须为数字值'}
    ]">
    <el-input type="age" v-model.number="numberValidateForm.age" autocomplete="off"></el-input>
  </el-form-item>

可将rule写在各自的el-form-item上

3.行间自定义校验
<el-form :model="numberValidateForm" ref="numberValidateForm" label-width="100px" class="demo-ruleForm">
  <el-form-item
    label="年龄"
    prop="age"
    :rules="[
      {max_age:18, validator: checkAge, trigger: 'blur' }
    ]">
    <el-input type="age" v-model.number="numberValidateForm.age" autocomplete="off"></el-input>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      ...
    },
    methods: {
      checkAge(rule, value, callback){
       //自定义校验规则
        //console.log(rule.max_age)
        if (!value) {
           return callback(new Error('年龄不能为空'));
       }
       if (!Number.isInteger(value)) {
         callback(new Error('请输入数字值'));
        } else {
          if (value < rule.max_age) {
            callback(new Error('必须年满18岁'));
          } else {
            callback();
          }
        }
      },
      ...... 
    }
  }
</script>

4.行间循环自定义校验

<el-form>
  <el-form-item
    v-for="(domain, index) in dynamicValidateForm.domains"
    :label="'域名' + index"
    :key="domain.key"
    :prop="`domains.${index}.value`" //绑定的prop
    :rules="[
     { required: true, message: '域名不能为空', trigger: 'blur' },
     {reg:/^--------$/, validator: checkDomain, trigger: 'blur' }
    ]"
  >
</el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        dynamicValidateForm: {
          domains: [
            { value: ''},
            { value: ''},
            { value: ''},
          ]
        }
      };
    },
    methods: {
      checkDomain(rule, value, callback){
        //自定义校验规则
        ......
       },
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
          }
        });
      }
    }
  }
</script>

相关文章

  • el-form的各种校验姿态

    1.基础姿势/自定义姿势 在el-form上绑定rules,rlues为校验规则,在el-form-item上绑定...

  • voltType is not a string

    el-form表单校验时报错 项目需求要对输入的表单内容进行类型和长度校验,其他格式都没问题,唯独是数字类型和长度...

  • element ui 表单校验

    添加校验的方法:1、给el-form添加rules属性,rules的值是一个对象,每一项是校验规则数组,el-fo...

  • el-form校验失败

    表单校验不报错,但是校验方法一直进不去,原因是因为自定义校验规则的时候没有else callback()

  • elementUI el-form validate方法不执行

    表单组件 el-form validate 方法不执行,检查自定义校验规则方法,是否执行了 callback 方法。

  • 各种校验

    用户在使用产品过程中,出于安全、保密等考虑,要进行各种验证,比如注册验证、登陆验证、资金验证,登陆验证是第一个环节...

  • el-tree在el-form中通过rules进行校验

    背景 如下图,在el-form中想实现el-tree的校验,elementUI并没有提供相关的示例。 按照通常的方...

  • el-form表单循环校验

    element-ui中el-form表单项循环渲染,并添加相关校验 关于这类功能需求,项目中还是挺常见的,所以今天...

  • vue3 二次封装el-form表单

    二次封装el-form,理由无非就是多个地方用同一个表单,懒得重复写校验。 表单组件 组件的使用

  • el-form自定义校验

    提示样式 一、基本校验 rules:{ name: [ { required: true, trigger: 'b...

网友评论

      本文标题:el-form的各种校验姿态

      本文链接:https://www.haomeiwen.com/subject/ckminftx.html