uview表单校验不生效问题

最近几次使用发现有时候会不生效,具体还没排查出来什么原因,先记录一下解决使用方法

html 复制代码
<u--form
	labelPosition="top"
	labelWidth="auto"
	:model="form"
	:rules="rules"
	ref="uForm"
>
	<view class="form-item">
		<view class="form-remark">
			<u-form-item
				label="反馈与建议"
				prop="contents"
				:borderBottom="false"
				:required="true"
				ref="item1"
			>
				<u--textarea
					v-model="form.contents" 
					placeholder="您填写的信息越全,问题越可有效解决哦~" 
					:count="true"
					maxlength="300"
					border="none"
					disableDefaultPadding="true"
					:placeholderStyle="{'fontSize':'28rpx;'}"
				></u--textarea>
			</u-form-item>
		</view>
	</view>
	<view class="form-item">
		<view class="form-remark">
			<u-form-item
				label="手机号"
				labelPosition="left"
				prop="phonenumber"
				:borderBottom="false"
				ref="item1"
			>
				<u-input
					placeholder="请输入手机号"
					border="none"
					v-model="form.phonenumber"
					:customStyle="{
						'line-height':'100rpx',
						'padding-bottom':'5px'
					}"
					color="#666"
					fontSize="14"
				></u-input>
			</u-form-item>
		</view>
	</view>
</u--form>
js 复制代码
<script>
export default {
	data() {
		return {
		form:{
			contents: null, // 备注
				phonenumber: null, 
				url: ''
			},
			rules: {
				'contents': {
					required: true,
					message: '请填写描述信息',
					trigger: ['blur', 'change']
				},
				'phonenumber': {
					required: true, 
					validator: (rule, value, callback) => {
						// 上面有说,返回true表示校验通过,返回false表示不通过
						return uni.$u.test.mobile(value);
					},
					message: '手机号码格式不正确',
					// 触发器可以同时用blur和change
					trigger: 'change',
				},
			},
		}
	},
	onReady() {
		//如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
		this.$refs.uForm.setRules(this.rules)
	},
}	
</script>

需要注意的是(有待验证):

  1. 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规 this.$refs.uForm.setRules(this.rules),如果是页面就写在onReady 里,如果是组件需要写在mounted
  2. prop 用contents可以正确校验,用form.contents好像不能正确校验
相关推荐
大怪v3 小时前
AI抢饭?前端佬:我要验牌!
前端·人工智能·程序员
新酱爱学习3 小时前
字节外包一年,我的技术成长之路
前端·程序员·年终总结
小兵张健3 小时前
开源 playwright-pool 会话池来了
前端·javascript·github
IT_陈寒6 小时前
Python开发者必知的5大性能陷阱:90%的人都踩过的坑!
前端·人工智能·后端
codingWhat6 小时前
介绍一个手势识别库——AlloyFinger
前端·javascript·vue.js
代码老中医6 小时前
2026年CSS彻底疯了:这6个新特性让我删掉了三分之一JS代码
前端
不会敲代码16 小时前
Zustand:轻量级状态管理,从入门到实践
前端·typescript
踩着两条虫6 小时前
VTJ.PRO 双向代码转换原理揭秘
前端·vue.js·人工智能
扉川川6 小时前
OpenClaw 架构解析:一个生产级 AI Agent 是如何设计的
前端·人工智能
远山枫谷6 小时前
一文理清页面/组件通信与 Store 全局状态管理
前端·微信小程序