首先创建一个注册页面
<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表单
这个是正则表达式在线生成器,可以浅看一下
先创建一个登录页面
<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不太了解可以看下官网