uni-app项目uview的表单验证在小程序上不生效

news/2025/1/22 18:10:52/文章来源:https://www.cnblogs.com/xwwin/p/18237815

前情

uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app,在uniapp生态中uView是其中非常好的全平台的第三方开源ui库,我在公司项目中果断的使用了它。

坑位

在用uView做小程序表单验证的时候,对于普通的验证是没有问题,如果要用到正则或者自定义验证方法,发现在小程序不生效。

Why?

是自己大意了没有闪,没细看官方文挡,官方文挡在Form表单文挡最开头就强调了,微信小程序要特殊处理,对于使用正则也是不行,有可能是用了正则就是走的自定义验证方法了吧。

官方文挡

解决方案

在小程序中,使用uView的表单验证如果你使用了正则验证或者自定义验证方法验证,那就不能通过:rules给form组件传验证规则,只能通过setRules(rules)手动指定form的验证规则才行。

不需要手动指定验证规则:

<template><view class="page-container"><u-form:model="form":rules="rules"ref="addressForm"><view class="form-wrap"><u-form-itemlabel="姓名:"requiredlabelWidth="auto"borderBottomprop="name"><u--inputv-model="form.name"inputAlign="right"placeholder="请输入"border="none"type="number"></u--input></u-form-item><u-form-itemlabel="手机号码:"requiredlabelWidth="auto"borderBottomprop="phone"><u--inputv-model="form.phone"inputAlign="right"placeholder="请输入"border="none"type="number"></u--input></u-form-item></view></u-form><button @click="submit">提交</button></view>
</template><script>export default {data() {return {form: {name: '',phone: '',},rules: {name: [{required: true,message: '请输入联系人姓名',trigger: ['blur', 'change']}],phone: [{required: true,message: '请输入手机号码',trigger: ['blur', 'change']}]}}},methods: {submit() {this.$refs.addressForm.validate().then(res => {uni.$u.toast('校验通过');}).catch(errors => {uni.$u.toast('校验失败');})}}}
</script><style lang="scss" scoped>.form-wrap{padding:0 32rpx 40rpx 32rpx;::v-deep{.u-form-item__body__left__content__label{font-size: 32rpx!important;color: #111111;}.u-form-item__body{padding: 32rpx 0;}.input-placeholder{text-align: right;}.u-input__content__field-wrapper{margin-right: 4px;}}}
</style>

需要手动指定验证规则,因为姓名使用了pattern/手机又使用了自定义的验证方法:

<template><view class="page-container"><u-form:model="form"ref="addressForm"><view class="form-wrap"><u-form-itemlabel="姓名:"requiredlabelWidth="auto"borderBottomprop="name"><u--inputv-model="form.name"inputAlign="right"placeholder="请输入"border="none"type="number"></u--input></u-form-item><u-form-itemlabel="手机号码:"requiredlabelWidth="auto"borderBottomprop="phone"><u--inputv-model="form.phone"inputAlign="right"placeholder="请输入"border="none"type="number"></u--input></u-form-item></view></u-form><button @click="submit">提交</button></view>
</template><script>export default {data() {return {form: {name: '',phone: '',},rules: {name: [{required: true,message: '请输入联系人姓名',trigger: ['blur', 'change']},// 正则判断为字母或数字{pattern: /^[\u4e00-\u9fa5]+$/g,// 正则检验前先将值转为字符串transform(value) {return String(value);},message: '只能包含字母或数字'},],phone: [{required: true,message: '请输入手机号码',trigger: ['blur', 'change']}, {validator: (rule, value, callback) => {return uni.$u.test.mobile(value);},// pattern: /^1\d{10}$/,message: '请输入正确的手机号',trigger: ['blur', 'change']}]}}},mounted() {// 手动提定rulesthis.$refs.addressForm.setRules(this.rules);},methods: {submit() {this.$refs.addressForm.validate().then(res => {uni.$u.toast('校验通过');}).catch(errors => {uni.$u.toast('校验失败');})}}}
</script><style lang="scss" scoped>.form-wrap{padding:0 32rpx 40rpx 32rpx;::v-deep{.u-form-item__body__left__content__label{font-size: 32rpx!important;color: #111111;}.u-form-item__body{padding: 32rpx 0;}.input-placeholder{text-align: right;}.u-input__content__field-wrapper{margin-right: 4px;}}}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/721554.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四层反向代理和七层反向代理

1、概述代理也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。 2、四层网络…

Python的基本

python之基本介绍(1)什么是pythonpython 是一门编程语言python是一门面向对象,解释型的动态类型的编程语言 guido van rossunm (吉多*范罗苏姆) 在1989年发明,第一个公开发行版本与1991年; python在市面上的版本:python 2.7 (以前用的非常多)目前用的版本是3.0 版本最…

IP-域名关联关系系统设计

0x01 数据库表实现 IP域名关系系统包括域名库检索和whois库检索,详情如下。 域名库检索 域名库检索支持以下5项功能: 1.通过过滤器检索 筛选条件包含IP地址、口令、工具名称、可利用的漏洞编号、创建时间; 2.通过关键字检索 在查询框中输入域名库名称的部分关键词,支持模糊…

5、Git之版本号

5.1、概述 每一次提交,Git 都会生成相关的版本号;每个版本号由 40 位 16 进制的数字组成。 这 40 位 16 进制的数字,是根据提交的内容,通过 SHA-1 算法计算出来的。 版本号具体还分为两部分,前 2 位是目录名,后 38 位是文件名。 5.2、文件操作 5.2.1、初始化本地库如上图…

linux内存管理(一)物理内存的组织和内存分配

从这一篇开始记录以下我看有关内存管理的内核代码的笔记. 内容很长,很多是我自己的理解,请谨慎观看. 伙伴系统的工作的基础是物理页的组织,组织结构有小到大依次为page->zone->node。下面从源码里看看各个结构是如何组织的。typedef struct pglist_data {struct zone no…

IP和域名 关联关系系统设计

基本说明 IP域名关系库管理包括域名库检索和whois库检索,详情如下。 域名库检索 域名库检索支持以下5项功能: 1.通过过滤器检索 筛选条件包含IP地址、口令、工具名称、可利用的漏洞编号、创建时间; 2.通过关键字检索 在查询框中输入域名库名称的部分关键词,支持模糊查找和精…

PLC通过Profinet转Modbus网关与流量计通讯案例

Profinet 转Modbus网关(XD-MDPN100/300)集成了Modbus和Profinet两种协议,支持Modbus RTU主从站。Profinet 转 Modbus网关自带网络和串口,可提供单路或多路RS485接口。Profinet 转 Modbus网关每个串口可连接32个从站设备,可实现协议转换和接口转换。PLC通过Profinet转Modbus网…

OpenGL:纹理

我们已经了解到,我们可以为每个顶点添加颜色来增加图形的细节,从而创建出有趣的图像。但是,如果想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会产生很多额外开销,因为每个模型都会需求更多的顶点,每个顶点又需求一个颜色属性。 艺术家和程…

北京端午游(送小微)

北京端午游 1、奥林匹克森林公园 🅿️交通:🚇地铁8号线森林公园南门站出🚗开车不推荐,游园还得回起点拿车,有点绕不值当🕙时间:半天or全天,根据路线决定🍚餐饮:自带或出国奥村门吃,太多好吃的,推荐日坛涮肉,眉州和满久居奥森北园北门出来有个林奥city!里面…

北京端午游

北京端午游 1、奥林匹克森林公园 🅿️交通:🚇地铁8号线森林公园南门站出🚗开车不推荐,游园还得回起点拿车,有点绕不值当🕙时间:半天or全天,根据路线决定🍚餐饮:自带或出国奥村门吃,太多好吃的,推荐日坛涮肉,眉州和满久居奥森北园北门出来有个林奥city!里面…

快速幂

快速幂大家好,我是Weekoder! 今天的内容是快速幂!(实际上是为了讲矩阵快速幂赶出来的嘻嘻 \[\texttt{Part 1 用处} \]快速幂,顾名思义就是快速地计算出某个数的幂,形如 \(a^n\)。 \[\texttt{Part 2 思想} \]为什么普通的幂运算慢?假设要计算 \(a^n\),则需要拆分成 \(a\…