手写一个表单验证封装类

本文介绍了如何手写一个表单验证封装类,包括支持的校验规则(如非空、手机号、邮箱、数字类型及范围等),内置的校验函数,初始化构造函数的使用,以及特别说明和使用示例。提供了完整的类代码供参考。
摘要由CSDN通过智能技术生成

Github地址:表单校验类

关于该类

支持的校验规则

  1. 非空判断(required)
  2. 手机号校验(phone)
  3. 邮箱校验(email)
  4. 数字类型校验(number)
  5. 数字范围校验(numberRange)
  6. 自定义校验函数(customize)

内置的校验函数

  1. testRequired
  2. testPhone
  3. testEmail
  4. testNumber
  5. testNumberRange

直接调用内置函数时,返回如下格式类型的结果:

{
   
	res: boolean,
	msg: string
}

初始化构造函数

在初始化构造函数时传入校验规则(具体格式参考下面的使用示例)。最后会返回校验出的第一个错误信息,如果全部校验成功则返回空字符串。

特别说明

  1. 该类对所有类型的校验都初始化了错误信息,当用户不填错误信息时,将自动使用默认信息。校验规则与默认信息的对应关系如下:
 {
   
  	 'required': '该项必填',
     'phone': '手机号不合法',
     'email': '邮箱不合法',
     'number': '所填项必须为有效数字',
     'numberRange': '数字必须在正确的范围内',
     'customize': '对于自定义校验函数,请输入自定义的错误信息'
 }
  1. 对于自定义校验函数,请返回一个布尔值
  2. 当校验规则只有一个或错误信息只有一个时,也可以直接传入一个字符串

使用示例

该类有两种使用方法,第一种是构造函数中什么都不传,然后直接调用类的公有方法进行判断。

第二种是在初始化构造函数时传入校验规则。请按照下面示例中的格式填写,注意value必填,rules必填。

然后调用res函数,该函数返回一个Promise。在链式调用中,如果err为空则校验成功,否则会返回第一条失败信息。

const Validate = require('./validate');

let phone = '17157527818';
let number = '0';
let email = '4548@sad.com'
let customize = '12';

const validation = new Validate();
const res = validation.testPhone(phone);
console.log(res);

const validate = new Validate([
    {
   
        value: phone,
        rules: ['required', 'phone'],
        msgs: ['手机号不能为空', '手机号错误']
    }
    , {
   
        value: number,
        rules: ['required', {
    type: 'number', max: 50, min: 1 }],
        msgs: ['数字不能为空', '']
    }
    , {
   
        value: email,
        rules: 'email'
    }, {
   
        value: customize,
        rules: (value) => value.startsWith('0'),
        msgs: '该项必须以0开头'
    }
]);

validate.res().then((err) => {
   
    if (!err) console.log('成功');
    else console.log('失败', err);
})

打印出结果:

{
    res: true, msg: 'success' }
失败 该项必须在1~5
### UniApp 中实现自定义表单验证 在 UniApp 中实现自定义表单验证可以通过多种方式完成。一种常见的方式是在 `onReady` 生命周期钩子中设置表单规则,并通过调用 `validate()` 方法来触发验证。 #### 设置表单规则 为了确保表单规则能够正确应用,可以在页面加载完成后立即设置这些规则: ```javascript export default { data() { return { rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 3, max: 8, message: '长度在 3 到 8 个字符', trigger: 'blur' } ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { pattern: /^[A-Za-z0-9]+$/, message: '仅允许字母和数字', trigger: 'blur' } ] } }; }, onReady() { this.$nextTick(() => { this.$refs.form.setRules(this.rules); }); } } ``` 这段代码展示了如何定义并初始化表单字段的验证规则[^3]。 #### 提交表单时进行验证 当用户提交表单时,可以使用如下所示的方法来进行数据有效性检查: ```javascript methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { console.log('成功'); } else { console.error('错误信息:', valid); } }); } } ``` 此部分逻辑会在点击提交按钮时被触发,它会尝试验证整个表单的内容;如果所有输入都有效,则执行成功的回调函数;如果有任何一项不符合条件,则显示相应的提示消息[^2]。 #### 定义更复杂的校验器 对于一些特定场景下的复杂业务需求,还可以编写更加灵活的异步或同步校验器。例如: ```javascript rules: { email: [{ validator(rule, value, callback) { const reg = /^([a-zA-Z]|[_.])[a-zA-Z\d_\-]*@[a-zA-Z\d]+\.[a-zA-Z]{2,4}$/; setTimeout(() => { if (!reg.test(value)) { callback(new Error('邮箱格式不正确')); } else { callback(); } }, 1000); // 模拟网络延迟 }, trigger: ['change'] }] } ``` 这里展示了一个用于电子邮件地址的有效性检测的例子,其中包含了正则表达式的匹配以及模拟了可能存在的服务器端响应时间[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值