uniapp 表单校验

需求如下: 同时校验手机号和邮箱
在这里插入图片描述
实现代码:

<template>
	<view class="container">
		<uni-section title="自定义校验规则" type="line">
			<view class="example">
				<!-- 自定义表单校验 -->
				<uni-forms ref="customForm" :rules="customRules" labelWidth="80px" :modelValue="customFormData">
					<uni-forms-item label="用户名" required name="name">
						<uni-easyinput v-model="customFormData.name" placeholder="请输入手机号或者邮箱" />
					</uni-forms-item>
					<uni-forms-item label="年龄" required name="age">
						<uni-easyinput v-model="customFormData.age" placeholder="请输入年龄" />
					</uni-forms-item>
					
				</uni-forms>
				<button type="primary" @click="submit('customForm')">提交</button>
			</view>
		</uni-section>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				// 自定义表单数据
				customFormData: {
					name: '',
					age: '',
					hobby: []
				},
				// 自定义表单校验规则
				customRules: {
					name: {
						rules: [
							{
							required: true,
							errorMessage: '用户名不能为空'
						    },
							{
								validateFunction: function(rule, value, data, callback) {
									if (value.indexOf('.com')>-1||value.indexOf('@')>-1) {
										let reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
										if (!reg.test(value)) {
											callback('请输入正确的邮箱')
										}
									}else{
										let reg = /^(0|86|17951)?(13[0-9]|15[012356789]|17[0-9]|18[0-9]|14[1457]|19[0-9]|16[0-9])[0-9]{8}$/;
										if (!reg.test(value)) {
											callback('请输入正确的手机号')
										}
									}
									return true
								}
							}
							
						]
					},
					age: {
						rules: [{
							required: true,
							errorMessage: '年龄不能为空'
						}]
					},

				},
				}
		},
		onReady() {
			// 设置自定义表单校验规则,必须在节点渲染完毕后执行
			this.$refs.customForm.setRules(this.customRules)
		},
		methods: {
			submit(ref) {
				console.log(this.baseFormData);
				this.$refs[ref].validate().then(res => {
					console.log('success', res);
					uni.showToast({
						title: `校验通过`
					})
				}).catch(err => {
					console.log('err', err);
				})
			},
		}
	}
</script>

forms组件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
el-form是Element UI框架中的表单组件,可以用于快速实现表单的输入、校验和提交功能。表单校验是el-form的一个重要特点,可以在表单提交前对用户输入的内容进行校验,确保输入的数据符合要求,有效避免了因用户错误输入而导致的数据错误。 el-form表单校验可以通过设置表单项的校验规则完成,校验规则可以通过对象、数组和函数三种方式进行设置。对象形式的校验规则可以通过设置如下属性完成: - required:是否必填 - min:最小长度或值 - max:最大长度或值 - type:数据类型 - pattern:正则表达式 数组形式的校验规则可以设置多个校验规则,每个校验规则可以包含一个对象形式的规则,也可以包含一个函数类型的规则。 函数形式的校验规则可以根据用户输入的值进行自定义校验,函数接受两个参数,分别为输入值和回调函数。在函数中用户可以使用if语句、正则表达式等方式对数据进行自定义校验,并通过回调函数返回校验结果。 当用户输入的数据不符合校验规则时,el-form会在表单项下方显示一个红色的提示框,提示用户输入不符合要求,并标识出哪些实际错误的规则。当用户输入正确时,提示框消失,允许用户提交表单。 总之,el-form表单校验是一种强大且灵活的输入数据校验机制,可以有效保证用户数据的准确性和合法性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摆烂吧小李

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值