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

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;
}

相关文章:

  • Python | 宽表转长表
  • 大数据清洗加工概述
  • UI学习(三)
  • 【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
  • 图片组件baseImage
  • SPI Flash开发全解(基于GD25Qxx)
  • 下载https协议的网络图片,并转为Base64
  • 基于vue框架的多媒体教室管理系统72d6w(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • Stream API:高效处理数据流!
  • 华为WLAN概述知识点及案例试题
  • 基于单片机的宠物屋智能系统设计与实现(论文+源码)
  • VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
  • 【Docker 03】Docker Registry - 镜像仓库
  • 基于uni-app for HarmonyOS5 的跨平台组件库开发指南,以及组件示例
  • 安宝特科技丨Pixee Medical产品获FDA认证 AR技术赋能骨科手术智能化
  • 热烈祝贺埃文科技正式加入可信数据空间发展联盟
  • 无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技
  • PydanticAI 作为 MCP 客户端示例
  • 报文口令重写功能分析(以某巢为例)
  • AI知识库调用全攻略:四种实战方法与技术实现
  • 武汉单位做网站/福州seo排名公司
  • 电子商务网站有哪几种/软文范例200字
  • 大连做网站哪家好/网络安全培训
  • 台州找人做网站/2022新闻热点10条
  • 网站策划编辑如何做/跨境电商培训
  • 开通微信公众号要钱吗/鸡西seo