【element】常用 El-Form 自定义表单校验规则实战

常用 El-Form 自定义表单校验规则实战

在 Vue 开发中,Element UI 的 组件为我们提供了强大的表单处理能力,其中就包括自定义校验规则这一重要功能。本文将详细介绍如何为常见的表单字段类型如电话号码、正整数与零、包含负数的数字、任意数字以及电子邮件地址编写自定义校验规则。

一、引入 Element UI 并初始化 Form 组件

首先,在项目中安装并引入 Element UI:

Bash
npm install element-ui --save

然后在 Vue 文件中引入并使用 el-form 组件:

<template>
  <el-form ref="form" :model="formData" :rules="formRules">
    <!-- 表单字段在这里 -->
  </el-form>
</template>

<script>
import { Form, FormItem } from 'element-ui';

export default {
  components: {
    ElForm: Form,
    ElFormItem: FormItem,
  },
  data() {
    return {
      formData: {
        // 初始化表单数据
      },
      formRules: {
        // 表单校验规则将在这里定义
      },
    };
  },
  // ...
};
</script>

二、自定义校验规则实践

  1. 电话号码校验
// ...
formRules: {
  phoneNumber: [
    { required: true, message: '电话号码不能为空', trigger: 'blur' },
    {
      validator: function(rule, value, callback) {
        // 匹配中国大陆手机号码
        const reg = /^1[3-9]\d{9}$/;
        if (!reg.test(value)) {
          callback(new Error('请输入正确的电话号码'));
        } else {
          callback();
        }
      },
      trigger: 'blur',
    },
  ],
},
// ...
  1. 正整数和零校验
positiveIntegerOrZero: [
  { required: true, message: '必须输入正整数或零', trigger: 'blur' },
  {
    validator: function(rule, value, callback) {
      const reg = /^\d+$/;
      if (!reg.test(value) || Number(value) < 0) {
        callback(new Error('只能输入正整数或零'));
      } else {
        callback();
      }
    },
    trigger: 'blur',
  },
],
  1. 包含负数的数字校验
numberIncludingNegative: [
  { required: true, message: '必须输入数字', trigger: 'blur' },
  {
    validator: function(rule, value, callback) {
      const reg = /^-?\d+(\.\d+)?$/; // 包含负数和小数的数字
      if (!reg.test(value)) {
        callback(new Error('请输入数字'));
      } else {
        callback();
      }
    },
    trigger: 'blur',
  },
],
  1. 数字判断校验(仅限整数)
integer: [
  { required: true, message: '必须输入整数', trigger: 'blur' },
  {
    validator: function(rule, value, callback) {
      const reg = /^-?\d+$/;
      if (!reg.test(value)) {
        callback(new Error('请输入整数'));
      } else {
        callback();
      }
    },
    trigger: 'blur',
  },
],
  1. 邮箱校验
email: [
  { required: true, message: '邮箱不能为空', trigger: 'blur' },
  {
    validator: function(rule, value, callback) {
      const reg = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$/;
      if (!reg.test(value)) {
        callback(new Error('请输入有效的邮箱地址'));
      } else {
        callback();
      }
    },
    trigger: 'blur',
  },
],

以上就是基于 Element UI 的 组件对几种常见场景下的自定义表单校验规则的实现。实际开发过程中,可以根据具体业务需求灵活调整校验规则。

### 实现 `el-form` 自定义校验规则Element UI 的 `el-form` 组件中,通过配置 `rules` 属性可以设置表单字段的验证规则。对于更复杂的场景,则支持自定义校验逻辑。 #### 定义表单模型与初始数据结构 首先,在 Vue 组件的数据部分定义好表单对象以及对应的验证规则: ```javascript data() { return { form: { // 表单域 model 数据对象 name: '', email: '' }, rules: { // 验证规则对象 name: [ { required: true, message: '请输入活动名称', trigger: 'blur' } ], email: [ { validator: validateEmail, trigger: 'blur' } // 使用自定义函数作为validator属性值 ] }; }; } ``` 上述代码片段中的 `email` 字段指定了名为 `validateEmail` 的自定义校验器[^1]。 #### 编写自定义校验函数 接着创建用于执行特定业务逻辑判断的回调函数,并将其赋给相应字段下的 `validator` 参数: ```javascript // 假设这是位于 methods 或者外部导入的一个方法 function validateEmail(rule, value, callback) { const regExp = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/; if (value === '') { callback(new Error('邮箱地址不能为空')); } else if (!regExp.test(value)) { callback(new Error('请输入合法的电子邮件地址')); } else { callback(); // 如果输入有效则调用callback不带参数表示成功 } } ``` 此函数接收三个参数:当前规则描述、待检字符串和错误处理程序。当检测到不符合条件的情况时应立即触发带有提示信息的 `callback()` 调用;反之如果一切正常只需简单地调用无参版即可[^2]。 #### HTML 结构展示 最后将这些配置应用至页面上的 `<el-form>` 标签里并指定关联关系: ```html <template> <div class="app-container"> <!-- 提交按钮 --> <button @click="submitForm">Submit</button> <!-- 表单主体 --> <el-form :model="form" status-icon :rules="rules" ref="ruleFormRef"> <el-form-item label="Name" prop="name"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="E-mail" prop="email"> <el-input type="text" v-model="form.email"></el-input> </el-form-item> </el-form> </div> </template> ``` 这里需要注意的是要为整个表单组件赋予唯一的 `ref` 名字以便后续操作引用它来触发表单整体或者局部项目的合法性检查[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值