用uniapp组件写登录注册

 首先创建一个注册页面

<template>
	<view class="register">
		//<u-avatar v-show="false" :src="imgsrc"></u-avatar>
		<u-form label-position="left" :error-type="errorType" ref="uForm" :model="form">
			<u-form-item label="用户名:" label-width=135px; prop="userName">
				<u-input type="text" v-model="form.userName" placeholder="请输入用户名" />
			</u-form-item>
			<u-form-item label="昵称:" prop="nickName">
				<u-input type="text" v-model="form.nickName" placeholder="请输入昵称" />
			</u-form-item>
			<u-form-item label="密码:" prop="password">
				<u-input type="password" v-model="form.password" password="true" placeholder="请输入密码" />
			</u-form-item>
			<u-form-item label="电话号码:" label-width=135px; prop="phonenumber" maxlength="11">
				<u-input type="number" v-model="form.phonenumber" placeholder="请输入电话号码" />
			</u-form-item>
			<u-form-item>
				<u-radio-group v-model="form.sex">
					<u-radio v-for="(item,index) in list" :key="index" :name="item.sex" :disabled="item.disabled">
						{{item.value}}
					</u-radio>
				</u-radio-group>
			</u-form-item>
			<u-form-item label="邮箱:" prop="email">
				<u-input type="email" v-model="form.email" placeholder="请输入邮箱" />
			</u-form-item>
			<u-form-item label="身份证号码:" label-width=135px; prop="idCard" placeholder="请输入身份证号码">
				<u-input type="idcard" v-model="form.idCard" />
			</u-form-item>
			<u-button @tap="register">注册</u-button>
		</u-form>
		<view class="other">
			<navigator url="/pages/login/login">已有账户,点击登入</navigator>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				errorType: ['message'],
				imgsrc: '../../static/4068DBAD4FB786E27344EFA0866DC4AF.jpg',
				form: {
					userName: '',
					nickName: '',
					password: '',
					phonenumber: '',
					email: '',
					idCard: '',
					sex: '',
					
				},
                //这里写的是一些验证规则
				rules: {
					userName: [{
							max: 6,
							message: '不能大于6',
							trigger: 'change'
						},
						{
							required: true,
							message: '请输入用户名',
							trigger: ['change', 'blur']
						}
					],
					nickName: [{
						required: true,
						message: '请输入昵称',
						trigger: ['change', 'blur']
					}],
					password: [{
							pattern: /^[a-zA-Z]\w{5,17}$/,  //正则表达式
							transform(value) {
								return String(value);
							},
							message: '以字母开头,长度在6~18之间,只能包含字母、数字和下划线',
							trigger: ['change', 'blur']
						},
						{
							min: 6,
							max: 18,
							message: '密码字数6-18之间',
							trigger: 'change'
						}, {
							required: true,
							message: '请输入密码',
							trigger: ['change', 'blur']
						}
					],
					phonenumber: [{
							required: true,
							message: '请输入手机号码',
							trigger: ['change', 'blur']
						},
						{
							max: 11,
							message: '手机号码不正确',
							trigger: ['change', 'blur']
						},
						{
							validator: (rule, value, callback) => {
								return this.$u.test.phonenumber(value);
							},
							message: '手机号码不正确',
							trigger: ['change', 'blur']
						}, {
							pattern: /^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/,
							transform(value) {
								return String(value);
							},
							message: '手机号码输入不正确',
							trigger: ['change', 'blur']
						}
					],
					email: [{
						required: true,
						message: '请输入邮箱',
						trigger: ['change', 'blur']
					}, {
						pattern: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
						message: '邮箱格式不正确',
						trigger: ['change', 'blur']
					}],
					idCard: [{
							pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
							transform(value) {
								return String(value);
							},
							message: '身份证号码不正确',
							trigger: ['change', 'blur']
						},
						{
							validator: (rule, value, callback) => {
								return this.$u.test.idCard(value)
							},
							message: '身份证号码输入不正确',
							trigger: ['change', 'blur']
						},
						{
							required: true,
							message: '请输入身份证号码',
							trigger: ['change', 'blur']
						}
					]
				},
                //这个是设置radio
				list: [{
						value: '男',
						disabled: false,
						sex: 0
					},
					{
						value: '女',
						disabled: false,
						sex: 1
					}

				],
				radio: '',
				img: '../../static/4068DBAD4FB786E27344EFA0866DC4AF.jpg'
			}
		},
		mounted() {
			// this.register();
		},
		onReady() {
			this.$refs.uForm.setRules(this.rules);
		},
		methods: {
			register() {
				this.$refs.uForm.validate(valid => {
						if (valid) {
							console.log('验证通过');
						} else {
							console.log('验证失败');
						}
					}),
					uni.showLoading({
						title: '加载中..'
					})
				uni.request({
					url: 'xxxxxxxxx',  //写接口的
					data: {    
						userName: this.form.userName,
						nickName: this.form.nickName,
						password: this.form.password,
						phonenumber: this.form.phonenumber,
						sex: this.form.sex,
						email: this.form.email,
						idCard: this.form.idCard,
						avatar:this.imgsrc
					},
					method: "POST",
					success: res => {
						if (res.data.code == 200) {  //注册成功就执行下面这些代码
							uni.hideLoading();
							console.log(this.imgsrc);
							//this.login(res.data);
							uni.showToast({          //显示注册成功
								title: '注册成功',
								mask: true,
								duration: 1500
							})
							setTimeout(() => {
								uni.navigateTo({     //注册成功跳转登录页面
									url: '/pages/login/login',
								}, 3000);
							})
						} else {
							uni.showToast({ 
								title: res.data.msg,
								icon: "none"
							})
						}
					}
				})
			}
		}
	}
</script>

<style lang="scss" scoped>
	.other {
		margin-top: 2vh;
		color: #6f6f6f;
		text-align: center;
	}
</style>

uniapp的form表单

Form 表单 | uView - 多平台快速开发的UI框架 - uni-app UI框架uView UI,是uni-app生态最优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水icon-default.png?t=M4ADhttps://v1.uviewui.com/components/form.html 

这个是正则表达式在线生成器,可以浅看一下

正则表达式在线测试 | 菜鸟工具一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$ 正数、负数、和小数:^(\-|\+)?\d+(\.\..icon-default.png?t=M4ADhttps://c.runoob.com/front-end/854/

先创建一个登录页面

<template>
	<view class="u-loading-circle">
		<view class="logins">
			用户登录
		</view>
		<view class="input">
			<u-form label-position="left" :error-type="errorType" ref="uForm" :model="form">
				<u-form-item label="用户名:" label-width=135px; prop="userName">
					<u-input type="text" v-model="form.userName" placeholder="请输入用户名" />
				</u-form-item>
				<u-form-item label="密码:" prop="password">
					<u-input type="password" v-model="form.password" password="true" placeholder="请输入密码" />
				</u-form-item>
			</u-form>
		</view>
		<view>
			<u-button @tap="login" class="button">登录</u-button>  
			<view class="other">
				<navigator url="registers">注册账号</navigator>
				<text>|</text>
				<navigator url="forget">忘记密码</navigator>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				errorType: ['message'],
				form: {
					userName: '',
					password: ''
				},
				hasLogin: false,
                //下面这个你可以看一下官网,他解释比较详细
				rules: {
					userName: [{
						required: true,
						message: '请输入用户名',
						trigger: 'change'
					}],
					password: [{
						required: true,
						message: '请输入密码',
						trigger: 'change'
					}]
				}
			}
		},
		onLoad() {
			
		},
		onReady() {    //这个跟上面那个rules结合一起用的
			this.$refs.uForm.setRules(this.rules);
		},
		methods: {
			login() {
				const data = {
					userName: this.form.userName,
					password: this.form.password
				};
				this.$refs.uForm.validate(valid => {   //这个是如果用户名和密码没有填写就不进入下一项操作
						if (valid) {
							console.log('验证通过');
						} else if (this.form.password == '') {
							console.log('请输入密码');
							console.log('验证失败');
						}
					}),
					uni.showLoading({     //这是加载事件,可以设置也可以不用设置
						title: '登录中...'
					})
				console.log(data);
				uni.request({
					url:xxxxxxxx,  //这里写的是登录接口
					data: {
						username: this.form.userName,
						password: this.form.password
					},
					method: 'POST',
					dataType:'json',
					success: res => {
						console.log(res.data);
						if (res.data.code == 200) {   //这里做了个判断,报200就是代表成功
							uni.hideLoading();
							uni.showToast({          
								title: '登录成功',
								mask: true,
								duration: 1500
							})
							this.hasLogin = true;
							uni.setStorageSync('token',res.data.token);   //登录成功保存token
							setTimeout(() => {          //登录成功就跳转首页
								uni.switchTab({
									url: '/pages/index/index'
								}, 2000)
							})
						} else {            
							uni.showToast({       //如果没有登录成功,就显示那里错了
								title: res.data.msg,
								icon: 'none'
							})
						}
					}
				})
			}
		}
	}
</script>
 
<style lang="scss" scoped>   
//这里写了一些比较简单的样式
	.u-loading-circle {
		.logins {
			font-size: 36px;
			color: #000000;
		}

		.button {
			background-color: #007AFF;
			margin-top: 2vh;
			color: #FFFFFF;
		}

		.other {
			margin-top: 2vh;
			display: flex;
			justify-content: center;

			::v-deep text {
				margin: 0 2vw;
			}
		}
	}
</style>

如果看完还对form不太了解可以看下官网

Form 表单 | uView - 多平台快速开发的UI框架 - uni-app UI框架uView UI,是uni-app生态最优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水icon-default.png?t=M4ADhttps://v1.uviewui.com/components/form.html 

  • 9
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值