vue之 el-form相关校验规则

vue之 el-form相关校验规则

校验 年龄 必须必填、必须为数字类型、必须大于18岁

<!--
描述:
  作者:xzl
  时间:0330190506
-->
<template>
  <div class="Home">
    Home formObj {{ formObj }}
    <el-form :model="formObj" :rules="rules" status-icon ref="formRef" label-width="100px">
      <el-form-item label="年龄" prop="age">
        <el-input v-model.number="formObj.age"></el-input>
      </el-form-item>
    </el-form>
    <button @click="comfirm">确定</button>
  </div>
</template>

<script>
export default {
  name: 'Home',
  components: {},
  data() {
    // 自定义校验规则
    const checkAge = (rule, value, callback) => {
      console.warn('checkAge')
      if (value < 18) {
        callback(new Error('年龄必须超过18岁'))
      } else {
        callback()
      }
    }
    return {
      formObj: {
        age: ''
      },
      rules: {
        age: [
          { required: true, message: '年龄是必填的' },
          { type: 'number', message: '年龄必须为数字类型' },
          { validator: checkAge, trigger: ['blur', 'change'] }
        ]
      }
    }
  },
  methods: {
    comfirm() {
      console.log('确定', this.formObj)
    }
  }
}
</script>
  • 效果
    在这里插入图片描述

校验用户名 必须为字母,下划线,数字

<!--
描述:
  作者:xzl
  时间:0330190506
-->
<template>
  <div class="Home">
    Home formObj {{ formObj }}
    <el-form :model="formObj" :rules="rules" status-icon ref="formRef" label-width="100px">
      <el-form-item label="用户名" prop="uname">
        <el-input v-model.number="formObj.uname"></el-input>
      </el-form-item>
    </el-form>
    <button @click="comfirm('formRef')">确定</button>
  </div>
</template>

<script>
export default {
  name: 'Home',
  components: {},
  data() {
    const isValidatorUName = str => {
      const reg = /^(?![^A-Za-z]+$)(?![^0-9]+$)[0-9A-Za-z_]{4,15}/
      return reg.test(str)
    }
    // 自定义校验规则
    const checkUName = (rule, value, callback) => {
      console.warn('checkAge')
      if (value === '') {
        callback(new Error('请输入用户名'))
      } else if (!isValidatorUName(value)) {
        callback(new Error('用户名要求为数字、字母、下划线的组合,必须字母开头,长度为4-15个字符'))
      }
    }
    return {
      formObj: {
        uname: ''
      },
      rules: {
        uname: [
          { required: true, message: '用户名是必填的' },
          { validator: checkUName, trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    comfirm(formRef) {
      this.$refs[formRef].validate(valid => {
        if (valid) {
          alert('submit!', this.formObj)
        } else {
          console.log('error submit!!')
          return false
        }
      })
    }
  }
}
</script>
  • 效果
    • 用户名要求为数字、字母、下划线的组合,必须字母开头,长度为4-15个字符
      在这里插入图片描述

校验用户名 用户名必填,必须为中文、字母、数字、下划线

<!--
描述:
  作者:xzl
  时间:0330190506
-->
<template>
  <div class="Home">
    Home formObj {{ formObj }}
    <el-form :model="formObj" :rules="rules" status-icon ref="formRef" label-width="100px">
      <el-form-item label="用户名" prop="uname">
        <el-input v-model.number="formObj.uname"></el-input>
      </el-form-item>
    </el-form>
    <button @click="comfirm('formRef')">确定</button>
  </div>
</template>

<script>
export default {
  name: 'Home',
  components: {},
  data() {
    const isValidatorUName = str => {
      const reg = /^[\u4e00-\u9fa5_a-zA-Z0-9.·-]{2,10}/
      return reg.test(str)
    }
    // 自定义校验规则
    const checkUName = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请输入用户名'))
      } else if (!isValidatorUName(value)) {
        callback(new Error('用户名要求为数字、字母、下划线的组合,不能数字开头,长度为2-10个字符'))
      }
    }

    return {
      formObj: {
        uname: ''
      },
      rules: {
        uname: [
          { required: true, message: '请输入姓名', trigger: 'blur' }, //不能为空
          { validate: checkUName, message: '用户名要求为数字、字母、下划线的组合,不能数字开头,长度为2-10个字符', trigger: 'blur' } //正则
        ]
      }
    }
  },
  methods: {
    comfirm(formRef) {
      this.$refs[formRef].validate(valid => {
        if (valid) {
          alert('submit!', this.formObj)
        } else {
          console.log('error submit!!')
          return false
        }
      })
    }
  }
}
</script>
  • 效果
    在这里插入图片描述

限制只能 输入整数 、 正则数

        <el-form :rules="editFormRules" label-width="110px" class="formClass" ref="editFormRef" :model="editForm">
          <el-row :gutter="16">
            <el-col :span="14">
              <el-form-item :label="$t('安全库存')" prop="savaNum">
                <el-input v-model="editForm.savaNum" :placeholder="$t('请输入安全库存')">
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>

      editForm: {
        savaNum: "",
      },
      editFormRules: {
        savaNum: [
          {
            required: true,
            message: this.$t("请输入安全库存"),
            trigger: "blur",
          },
          {
            "pattern": /^-?[0-9]*$/, // 去掉 -?则是正整数
            message: this.$t("只能输入整数"),
            trigger: "blur",
          },
        ]
      },
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值