vue+Element-ui實(shí)現(xiàn)登錄注冊(cè)表單
本文實(shí)例為大家分享了vue+Element-ui實(shí)現(xiàn)登錄注冊(cè)表單的具體代碼,供大家參考,具體內(nèi)容如下
登錄注冊(cè)表單驗(yàn)證
通過Element-ui的表單實(shí)現(xiàn)登錄注冊(cè)的表單驗(yàn)證
效果圖如下

注冊(cè)

登錄表單
登錄的實(shí)現(xiàn),需要通過手機(jī)號(hào)或者郵箱進(jìn)行登錄,驗(yàn)證手機(jī)號(hào)或者郵箱符合要求
// 登錄表單驗(yàn)證的代碼
// template的代碼
<el-form
:model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item prop="user">
<el-input
type="text"
placeholder="請(qǐng)輸入手機(jī)號(hào)或者郵箱號(hào)"
required="required"
v-model="ruleForm.user"
prefix-icon="el-icon-user-solid"
></el-input>
</el-form-item>
<el-form-item prop="pass">
<el-input
type="password"
placeholder="請(qǐng)輸入密碼"
prefix-icon="el-icon-lock"
v-model="ruleForm.pass"
@keyup.enter.native="toSubmitForm('ruleForm')"
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">登錄</el-button>
</el-form-item>
</el-form>
//script的代碼
// 兩個(gè)驗(yàn)證,驗(yàn)證密碼不能為空,驗(yàn)證,手機(jī)號(hào)或者郵箱是否符合要求
data() {
var validatePass = (rule, value, callback) => {
if (value === '') {
callback(new Error('請(qǐng)輸入密碼'))
} else {
callback()
}
}
var validateUser = (rule, value, callback) => {
if (value === '') {
callback(new Error('手機(jī)號(hào)或者郵箱不能為空'))
} else {
const reg = /^1[3|4|5|7|8][0-9]\d{8}$/
// eslint-disable-next-line no-useless-escape
const reg2 = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
if ((reg.test(value) || reg2.test(value))) {
callback()
} else {
callback(new Error('請(qǐng)輸入正確的手機(jī)號(hào)或者郵箱'))
}
}
}
return {
// 獲取url地址后面的參數(shù)
urlQuery: '',
activeIndex: '1',
ruleForm: {
pass: '',
user: ''
},
rules: {
user: [{ required: true, validator: validateUser, trigger: 'blur' }],
pass: [{ required: true, validator: validatePass, trigger: 'blur' }]
}
}
},
注冊(cè)表單驗(yàn)證
注冊(cè)表單的實(shí)現(xiàn),注冊(cè)有用戶名,以及通過手機(jī)或者郵箱獲取驗(yàn)證碼,之后輸入密碼,且需要再次確認(rèn)密碼是否一致
//注冊(cè)表單的代碼
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" class="demo-ruleForm">
<el-form-item prop="user1">
<el-input type="text" placeholder="用戶名" required="required" v-model="ruleForm.user1" prefix-icon="el-icon-user-solid"></el-input>
</el-form-item>
<el-form-item prop="pass1">
<el-input class="phone-input" placeholder="手機(jī)號(hào)/郵箱" v-model="ruleForm.pass1" prefix-icon="el-icon-mobile-phone"></el-input>
</el-form-item>
<el-form-item prop="code" class="phone" v-show="yzmshow">
<el-input v-model="ruleForm.code" placeholder="驗(yàn)證碼" :minlength="6" :maxlength="6"></el-input>
<el-button type="primary" @click="getCode()" class="code-btn" :disabled="!show">
<span v-show="show">發(fā)送驗(yàn)證碼</span>
<span v-show="!show" class="count">{{ count }} s</span>
</el-button>
</el-form-item>
<el-form-item prop="pass">
<el-input type="password" placeholder="請(qǐng)輸入密碼" v-model="ruleForm.pass" prefix-icon="el-icon-lock"></el-input>
</el-form-item>
<el-form-item prop="checkPass">
<el-input type="password" placeholder="請(qǐng)?jiān)俅屋斎朊艽a" v-model="ruleForm.checkPass" prefix-icon="el-icon-lock"></el-input>
</el-form-item>
<el-form-item class="btn-form">
<el-button type="primary" @click="submitForm('ruleForm')">注冊(cè)</el-button>
<!-- <el-button @click="resetForm('ruleForm')">重置</el-button> -->
</el-form-item>
</el-form>
// script中data()的代碼
data() {
var validateUser1 = async (rule, value, callback) => {
if (value === '') {
callback(new Error('請(qǐng)輸入用戶名'))
} else {
if (value) {
const res = await request.post('/api/user/checkUsernameExist', {
username: this.ruleForm.user1
})
console.log(res)
if (res.data.code === 20000) {
callback()
} else {
return callback(new Error('該用戶名已經(jīng)被注冊(cè)'))
}
}
}
}
var validatePass1 = async (rule, value, callback) => {
if (value === '') {
callback(new Error('手機(jī)號(hào)或者郵箱不能為空'))
} else {
const reg = /^1[3|4|5|7|8][0-9]\d{8}$/
// eslint-disable-next-line no-useless-escape
const reg2 = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
if ((reg.test(value) || reg2.test(value))) {
this.yzmshow = true
callback()
} else {
callback(new Error('請(qǐng)輸入正確的手機(jī)號(hào)或者郵箱'))
}
}
}
var validatePass = (rule, value, callback) => {
if (value === '') {
callback(new Error('請(qǐng)輸入密碼'))
} else {
if (this.ruleForm.checkPass !== '') {
this.$refs.ruleForm.validateField('checkPass')
}
callback()
}
}
var validateCode = (rule, value, callback) => {
if (value === '') {
callback(new Error('請(qǐng)輸入驗(yàn)證碼'))
} else {
if (this.ruleForm.code.length === 6) {
callback()
} else {
callback(new Error('驗(yàn)證碼不正確'))
}
}
}
var validatePass2 = (rule, value, callback) => {
if (value === '') {
callback(new Error('請(qǐng)?jiān)俅屋斎朊艽a'))
} else if (value !== this.ruleForm.pass) {
callback(new Error('兩次輸入密碼不一致!'))
} else {
callback()
}
}
return {
activeIndex: '2',
loginForm: {
mobile: '',
code: '',
zheCode: ''
},
show: true,
count: '',
timer: null,
yzmshow: false,
ruleForm: {
user1: '',
pass1: '',
pass: '',
checkPass: '',
zhecode: '',
mobile: '',
phoneCode: '',
emailCode: '',
code: ''
},
rules: {
code: [{
required: true,
validator: validateCode,
trigger: 'blur'
},
{
min: 6,
max: 6,
message: '長(zhǎng)度為6',
trigger: 'blur'
}
],
user1: [{
required: true,
validator: validateUser1,
trigger: 'blur'
}],
pass1: [{
required: true,
validator: validatePass1,
trigger: 'blur'
}],
// 密碼
pass: [{
required: true,
validator: validatePass,
trigger: 'blur'
},
{
min: 6,
message: '長(zhǎng)度在不少于6個(gè)字符',
trigger: 'blur'
}
],
// 校驗(yàn)密碼
checkPass: [{
required: true,
validator: validatePass2,
trigger: 'blur'
},
{
min: 6,
message: '長(zhǎng)度在不少于6個(gè)字符',
trigger: 'blur'
}
]
}
}
},
需要驗(yàn)證手機(jī)號(hào)或者郵箱是否符合要求,如果符合的話顯示驗(yàn)證碼

點(diǎn)擊發(fā)送驗(yàn)證碼進(jìn)行60s倒計(jì)時(shí),在倒計(jì)時(shí)中,不能再發(fā)送驗(yàn)證碼

關(guān)于vue.js組件的教程,請(qǐng)大家點(diǎn)擊專題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。
更多vue學(xué)習(xí)教程請(qǐng)閱讀專題《vue實(shí)戰(zhàn)教程》
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Vue+ElementUI實(shí)現(xiàn)表單動(dòng)態(tài)渲染、可視化配置的方法
- 基于Vue+elementUI實(shí)現(xiàn)動(dòng)態(tài)表單的校驗(yàn)功能(根據(jù)條件動(dòng)態(tài)切換校驗(yàn)格式)
- Vue ElementUI之Form表單驗(yàn)證遇到的問題
- element 結(jié)合vue 在表單驗(yàn)證時(shí)有值卻提示錯(cuò)誤的解決辦法
- Vue?elementUI表單嵌套表格并對(duì)每行進(jìn)行校驗(yàn)詳解
- vue中使用element-ui進(jìn)行表單驗(yàn)證的實(shí)例代碼
- vue elementui form表單驗(yàn)證的實(shí)現(xiàn)
- vue中el表單的簡(jiǎn)單查詢方法
相關(guān)文章
Vue事件獲取事件對(duì)象之event.currentTarget詳解
這篇文章主要介紹了Vue事件獲取事件對(duì)象之event.currentTarget,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue?element-ui中表格過長(zhǎng)內(nèi)容隱藏顯示的實(shí)現(xiàn)方式
在Vue項(xiàng)目中,使用ElementUI渲染表格數(shù)據(jù)時(shí),如果某一個(gè)列數(shù)值長(zhǎng)度超過列寬,會(huì)默認(rèn)換行,造成顯示不友好,下面這篇文章主要給大家介紹了關(guān)于Vue?element-ui中表格過長(zhǎng)內(nèi)容隱藏顯示的實(shí)現(xiàn)方式,需要的朋友可以參考下2022-09-09
解決vue項(xiàng)目中遇到 Cannot find module ‘chalk‘ 報(bào)錯(cuò)的問題
這篇文章主要介紹了解決vue項(xiàng)目中遇到 Cannot find module ‘chalk‘ 報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
vue3+ts重復(fù)參數(shù)提取成方法多處調(diào)用以及字段無值時(shí)不傳字段給后端問題
在進(jìn)行API開發(fā)時(shí),優(yōu)化參數(shù)傳遞是一個(gè)重要的考量,傳統(tǒng)方法中,即使參數(shù)值為空,也會(huì)被包含在請(qǐng)求中發(fā)送給后端,這可能會(huì)導(dǎo)致不必要的數(shù)據(jù)處理,而優(yōu)化后的方法則只會(huì)傳遞那些實(shí)際有值的字段,從而提高數(shù)據(jù)傳輸?shù)挠行院秃蠖颂幚淼男?/div> 2024-10-10
vue項(xiàng)目element-ui級(jí)聯(lián)選擇器el-cascader回顯的問題及解決
這篇文章主要介紹了vue項(xiàng)目element-ui級(jí)聯(lián)選擇器el-cascader回顯的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
JSON數(shù)組和JSON對(duì)象在vue中的獲取方法
這兩天在學(xué)習(xí)vue,主要是為了實(shí)現(xiàn)前后端的分離,因此數(shù)據(jù)的傳輸是必不可少的一個(gè)環(huán)節(jié),這篇文章主要介紹了JSON數(shù)組和JSON對(duì)象在vue中的獲取方法,需要的朋友可以參考下2022-09-09最新評(píng)論

