VUE3+elementPlus 之 Form表单校验器 之 字符长度校验

本文介绍了如何在JavaScript中创建一个函数,用于校验输入框中的字符长度,当输入超过设定的最大长度时提供错误提示。该函数接受rule对象、值、回调和文本长度规则作为参数,适用于表单验证组件。
摘要由CSDN通过智能技术生成

需求:校验字符长度,超过后仍可输入,error提示录入字符数与限制字符数

校验字符长度:

/**
 * 检验文字输入区的长度
 * @param {*} rule                输入框的rule 对象,field:字段名称
 * @param {*} value               输入框的内容
 * @param {*} callback            回调函数
 * @param {*} textLengthRules     文本长度校验规则对象, key:字段名称,value:字段允许最大长度
 * @returns
 */
export function validTextField(rule: any, value: any, callback: any, textLengthRules: any) {
  if (!value) {
    callback();
    return;
  }
  const field = rule.field;
  const arr = field.split(".");
  // 表单列表内容校验
  if (arr.length > 0) {
    const len = textLengthRules[arr[0]][arr[arr.length - 1]];
    if (value.length > len) {
      callback(new Error(`${value.length}/${len} 内容输入超出范围`));
      return;
    }
  }

  // 支持字段校验
  if (textLengthRules?.[field] && value.length > textLengthRules[field]) {
    callback(new Error(`${value.length}/${textLengthRules[field]} 内容输入超出范围`));
    return;
  }
  callback();
}

组件内使用:

const textLengthRules = {
  num: 15
};
const validTextLength = (rule: any, value: any, callback: any) => {
  validTextField(rule, value, callback, textLengthRules);
};
rules: {
	num: [{ validator: validTextLength }],
}

页面效果:
在这里插入图片描述

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是基于Vue3和ElementPlus生成的登录表单,包含账户和密码字段: ``` <template> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" label-width="80px" class="login-form"> <el-form-item label="账户" prop="username"> <el-input v-model.trim="loginForm.username" placeholder="请输入账户"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input v-model.trim="loginForm.password" type="password" placeholder="请输入密码"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">登录</el-button> </el-form-item> </el-form> </template> <script> import { reactive } from 'vue' import { ElForm, ElFormItem, ElInput, ElButton } from 'element-plus' export default { components: { ElForm, ElFormItem, ElInput, ElButton }, setup() { const loginForm = reactive({ username: '', password: '' }) const loginRules = { username: [ { required: true, message: '请输入账户', trigger: 'blur' } ], password: [ { required: true, message: '请输入密码', trigger: 'blur' } ] } const submitForm = () => { const form = ref.value.loginForm form.validate(valid => { if (valid) { // 提交表单操作 } else { return false } }) } return { loginForm, loginRules, submitForm } } } </script> ``` 该表单使用了ElementPlus库提供的组件,包括ElForm、ElFormItem、ElInput和ElButton,同时使用了Vue3的reactive函数来创建响应式的数据对象loginForm,以及使用了表单验证规则loginRules和提交表单操作submitForm。在模板中,通过v-model指令将表单输入框的值绑定到loginForm对象的属性上,通过@click指令绑定提交表单操作。在脚本中,通过setup函数创建了loginForm、loginRules和submitForm变量,并通过return关键字将这些变量暴露给模板使用。在submitForm函数中,使用了ElForm组件提供的validate方法对表单进行验证,通过valid参数判断表单是否验证通过,如果通过则执行提交表单操作,否则返回false。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫兹/Herzz

如果我的博文帮助到您请打赏支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值