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好像不能正确校验
相关推荐
前端小怪兽zmy8 分钟前
Vue3实现纯前端语音输入成文字显示
前端·javascript·elementui
ohyeah11 分钟前
原子化 CSS 与 Fragment:现代前端开发的高效实践
前端
鱼鱼块16 分钟前
告别重复传参!用柯里化提升代码优雅度
前端·javascript·面试
chilavert31818 分钟前
技术演进中的开发沉思-274 AJax :Button
前端·javascript·ajax·交互
Robet18 分钟前
static 和 lib/assets资源区别
前端·svelte
名字被你们想完了20 分钟前
Flutter 实现一个容器内部元素可平移、缩放和旋转等功能(九)
前端·flutter
千寻girling22 分钟前
面试官: “ 说一下你对 Cookie 的理解 ? ”
前端·后端
RedHeartWWW25 分钟前
nextjs中,关于Layout组件和Page组件的认知
前端·react.js
大明二代25 分钟前
基于 Microsoft Graph API 与 React Email 构建现代化邮件发送系统
前端·react.js·microsoft
sujiu28 分钟前
eslint匹配规则速通
前端