uni-ui组件库实现用户注册功能,自定义效验规则

注意事项:

确认密码功能,需要二次密码一致,这里需要使用自定义规则。

html部分

<view class="reg-box">
			<uni-forms ref="form" :modelValue="formData">
				<view class="input-item">
					<uni-forms-item name="username">
						<uni-easyinput type="text" v-model="formData.username" placeholder="请输入用户名" />
					</uni-forms-item>
				</view>
				<view class="input-item">
					<uni-forms-item name="password">
						<uni-easyinput type="password" v-model="formData.password" placeholder="请输入密码" />
					</uni-forms-item>
				</view>
				<view class="input-item">
					<uni-forms-item name="password2">
						<uni-easyinput type="password" v-model="formData.password2" placeholder="请确认密码" />
					</uni-forms-item>
				</view>	
			</uni-forms>
			<button class="regOk" @click="submit">注 册</button>
</view>

JS部分

data() {
			return {
				timeId: null,
				// 表单数据
				formData: {
					username: '',
					password: '',
					password2: ''
				},
				rules: {
					// 对username字段进行必填验证
					username: {
						rules: [{
								required: true,
								errorMessage: '请输入用户名',
							},
							{
								minLength: 3,
								maxLength: 5,
								errorMessage: '用户名在 {minLength} 到 {maxLength} 个字符',
							}
						]
					},
					password: {
						rules: [{
								required: true,
								errorMessage: '请输入密码',
							},
							{
								minLength: 8,
								errorMessage: '密码太短,请重新设置'
							}
						]
					},
					password2: {
						rules: [{
								required: true,
								errorMessage: '确认密码不能为空',
							},
							{
								// 定义自定义效验规则函数
								validateFunction: (rule,value,data,callback)=>{
									if (this.formData.password !== value) {
										callback('两次密码输入不一致')
									}
									return true
								}
							}
						]
					}
				}
			}
		},
		onReady() {
			this.$refs.form.setRules(this.rules)
		},
		methods: {
			/**
			 * 复写 binddata 方法,如果只是为了校验,无复杂自定义操作,可忽略此方法
			 * @param {String} name 字段名称
			 * @param {String} value 表单域的值
			 */
			// binddata(name,value){
			// 通过 input 事件设置表单指定 name 的值
			//   this.$refs.form.setValue(name, value)
			// },
			// 触发提交表单
			submit() {
				this.$refs.form.validate().then(res=>{
					uni.showToast({
						title: '注册成功,请重新登录',
						icon: 'none'
					})
					this.timeId = setTimeout(()=>{
						uni.navigateTo({
							url: "/pages/login/login"
						})
						clearTimeout(this.timeId)
					},2000)
				}).catch(err =>{
					uni.showToast({
						title: '未成功注册',
						icon: 'none'
					})
				})
			}
		}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值