当前位置: 首页 > java >正文

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录

  • 1 单个正整数输入
    • 1.1 模板
    • 1.2 校验规则
  • 2 两个正整数输入(联动)
    • 2.1 模板
    • 2.2 校验规则
    • 2.3 CSS

1 单个正整数输入

1.1 模板

<el-formref="formRef":model="formData":rules="formRules"label-width="150px"
><el-form-item label="属性中文名" prop="propName"><el-input v-model.number="formData.propName" placeholder="请输入一个正整数" /></el-form-item>
</el-form>

1.2 校验规则

import { reactive, ref } from 'vue'// 表单引用
const formRef = ref(null)// 表单数据
const formData = reactive({propName: ''
})/*** 正整数校验规则函数* @param {String} propName 属性名*/
const positiveNumValidator = (propName = '属性') => {return (rule, value, callback) => {if (value === '') {callback(new Error(`${propName}不能为空`))} else {if (!/^[1-9]\d*$/.test(value)) {callback(new Error(`${propName}是一个正整数`))} else {callback()}}}
}// 表单校验规则
const formRules = reactive({propName: [{ required: true,trigger: 'blur',validator: positiveNumValidator('propName')}]
})

2 两个正整数输入(联动)

2.1 模板

<el-formref="formRef":model="formData":rules="formRules"label-width="150px"
><el-form-item label="属性范围" prop="propRange"><div class="input-wrapper"><el-inputv-model.number="formData.propName1"placeholder="请输入一个正整数"/><span style="margin: 0 10px">-</span><el-inputv-model.number="formData.propName2"placeholder="请输入一个正整数"/></div></el-form-item>
</el-form>

2.2 校验规则

import { reactive, ref } from 'vue'// 表单引用
const formRef = ref(null)// 表单数据
const formData = reactive({propName1: '',propName2: ''
})/*** 时间范围(正整数)校验规则函数* 说明:如果您的项目需求中的时间范围是 DataTime 类型的,推荐使用 Element Plus 的 DateTimePicker 组件* @param {Number} start 开始时间(正整数)* @param {Number} end 结束时间(正整数)* @param {String} propName 属性名*/
const timeRangeValidator = (start, end, propName = '时间范围') => {return (rule, value, callback) => {if (start === '' || end === '') {callback(new Error(`${propName}不能为空`))} else if (!/^[1-9]\d*$/.test(start) || !/^[1-9]\d*$/.test(end)) {callback(new Error(`${propName}必须是正整数`))} else if (start >= end) {callback(new Error('开始时间必须小于结束时间'))} else {callback()}}
}// 表单校验规则
const formRules = reactive({propRange: [{required: true,trigger: 'blur',validator: (rule, value, callback) => {const start = formData.propName1;const end = formData.propName2;const rangeValidator = timeRangeValidator(start, end)rangeValidator(rule, value, callback) }// 注意:不能简写为 validator: timeRangeValidator(formData.propName1, formData.propName2)// 原因:timeRangeValidator()在创建时捕获的是 初始值​​(空字符串),后续表单更新时校验函数内变量不会更新,需要在验证器内部实时获取最新值}]
})

2.3 CSS

.input-wrapper {display: flex;align-items: center;flex: 1;
}
http://www.xdnf.cn/news/13097.html

相关文章:

  • DeepSeek辅助实现的DuckDB copy to自定义函数
  • SHW汽车SAP系统拆分实战:24小时停机完成重组 | SNP全球案例
  • Brup Suite 2025.5简单暴力猜解攻击手记
  • 安装便捷、维护省心,强力巨彩租赁屏助力视觉体验升级
  • Win系统权限提升篇计算机用户进程注入令牌窃取服务启动远程管理
  • 基于51单片机的篮球计分器
  • C++ 时间处理指南:深入剖析<ctime>库
  • 医疗器械研发、质量与注册:全流程指南(简)
  • nnUNet V2代码——图像增强(四)
  • Android Jetpack Compose开发纯自定义表盘【可用于体重,温度计等项目】
  • 十一(3) 类,加深对拷贝构造函数的理解
  • 突然无法调用scikit-learn、xgboost
  • 创客匠人:以AI赋能创始人IP打造,开启知识变现新范式
  • 【CANN全新升级】CANN创新MLAPO算子,DeepSeek模型推理效率倍增
  • 力扣160.相交链表
  • ms12-020漏洞复现
  • TJCTF 2025
  • 问题复盘-当前日志组损坏问题
  • 运算符之赋值运算符+运算符之比较运算符
  • ETLCloud可能遇到的问题有哪些?常见坑位解析
  • c# Autorest解析
  • 【AI学习】三、AI算法中的向量
  • 【java】【服务器】线程上下文丢失 是指什么
  • 亚马逊Woot深度解析
  • 【TVM 教程】如何使用 TVM Pass Infra
  • 健康档案实训室:构建全周期健康管理的数据基石
  • python报错 ModuleNotFoundError: No module named ‘Crypto‘
  • Linux下如何使用Curl进行网络请求
  • 主成分分析(PCA)原理与实战:从0到1彻底掌握
  • 智能门锁申请 EN 18031 欧盟网络安全认证指南​