Vue Form表單的使用方法(rules格式校驗網(wǎng)絡(luò)校驗鍵盤按鍵監(jiān)聽)
Form表單

rules格式校驗
可以在validator中進行網(wǎng)絡(luò)請求,實現(xiàn)網(wǎng)絡(luò)校驗
const formRules = {
userName: [{required: true, message: "用戶名不能為空", trigger: 'blur'}, {
min: 5,
max: 10,
message: "長度必須5-10位",
trigger: 'blur'
}],
passWord: [{required: true, message: "密碼不能為空", trigger: 'blur'}],
reference: [{
validator: referenceValidity,
required: true,
trigger: "blur",
},],
}
function referenceValidity(rule, value, callback) {
console.log('校驗推薦人')
if (value === "" || value === undefined) {
callback(new Error("請輸入推薦人姓名"));
} else {
//請求網(wǎng)絡(luò)校驗推廣人
// console.log("輸入的推薦人姓名:" + value)
// const _url = "xxxxxxxxxxx";
// let param = {};
// param.promotionPecialistName = value;
// get(this.$http, _url, param).then(function (response) {
// let res = response.data;
// if (res.code === "I000000") {
// if (res.data.isFlag) {
// callback()
// } else {
// callback(new Error("推薦人不存在"))
// }
// } else {
// callback(new Error("推薦人不存在"))
// }
// });
callback(new Error("推薦人不存在"))
}
}formRef引用form對象 form表單中關(guān)聯(lián)formRef(引用對象),form(表單內(nèi)容),formRules(校驗規(guī)則)
<el-form ref="formRef" :model="form" :rules="formRules">
const formRef = ref()
function reqLogin() {
console.log("賬號信息", form.value)
formRef.value.validate((valid) => {
console.log("formRef valid = ", valid)
if (valid) {
setToken()
store.commit("setUserInfo", form.value)
showToast("登錄成功")
router.push('/')
}
})
}鍵盤監(jiān)聽
onMounted(() => {
console.log("頁面加載")
document.addEventListener('keyup', onkeyup)
})
onBeforeUnmount(() => {
document.removeEventListener('keyup', onkeyup)
})
function onkeyup(e) {
if (e.key === 'Enter') {
reqLogin()
}
}完整代碼
<script setup>
import {onBeforeUnmount, onMounted, ref} from "vue";
import {Lock, User} from "@element-plus/icons-vue";
import {useRouter} from "vue-router";
import {setToken} from "../utils/CookieUtil.js";
import {showToast} from "../utils/ToastUtil.js";
import {useStore} from "vuex";
const router = useRouter()
const store = useStore()
const form = ref({
userName: "",
passWord: "",
reference: ""
})
const formRef = ref()
const formRules = {
userName: [{required: true, message: "用戶名不能為空", trigger: 'blur'}, {
min: 5,
max: 10,
message: "長度必須5-10位",
trigger: 'blur'
}],
passWord: [{required: true, message: "密碼不能為空", trigger: 'blur'}],
reference: [{
validator: referenceValidity,
required: true,
trigger: "blur",
},],
}
function referenceValidity(rule, value, callback) {
console.log('校驗推薦人')
if (value === "" || value === undefined) {
callback(new Error("請輸入推薦人姓名"));
} else {
//請求網(wǎng)絡(luò)校驗推廣人
// console.log("輸入的推薦人姓名:" + value)
// const _url = "xxxxxxxxxxx";
// let param = {};
// param.promotionPecialistName = value;
// get(this.$http, _url, param).then(function (response) {
// let res = response.data;
// if (res.code === "I000000") {
// if (res.data.isFlag) {
// callback()
// } else {
// callback(new Error("推薦人不存在"))
// }
// } else {
// callback(new Error("推薦人不存在"))
// }
// });
callback(new Error("推薦人不存在"))
}
}
function onkeyup(e) {
if (e.key === 'Enter') {
reqLogin()
}
}
onMounted(() => {
console.log("頁面加載")
document.addEventListener('keyup', onkeyup)
})
onBeforeUnmount(() => {
document.removeEventListener('keyup', onkeyup)
})
function reqLogin() {
console.log("賬號信息", form.value)
formRef.value.validate((valid) => {
console.log("formRef valid = ", valid)
if (valid) {
setToken()
store.commit("setUserInfo", form.value)
showToast("登錄成功")
router.push('/')
}
})
}
</script>
<template>
<div style="height: 100vh;width: 100vw;display: flex;flex-direction: row">
<div class="flex-col-center" style="width: 70%;height: 100%;background: #213547;">
<span style="font-size: 40px;color: white;">測試系統(tǒng)登錄頁面</span>
<span style="font-size: 20px;color: white;">演示Demo</span>
</div>
<div class="flex-col-center" style="width: 30%;padding: 100px">
<h2 style="font-size: 20px">歡迎回來</h2>
<el-form ref="formRef" :model="form" :rules="formRules">
<el-form-item label="賬號" prop="userName">
<el-input v-model="form.userName" placeholder="請輸入賬號">
<template #prefix>
<el-icon>
<User/>
</el-icon>
</template>
</el-input>
</el-form-item>
<el-form-item label="密碼" prop="passWord">
<el-input v-model="form.passWord" placeholder="請輸入密碼" show-password type="password">
<template #prefix>
<el-icon>
<Lock/>
</el-icon>
</template>
</el-input>
</el-form-item>
<el-form-item label="推薦人" prop="reference">
<el-input v-model="form.reference" placeholder="請輸入推薦人"></el-input>
</el-form-item>
</el-form>
<el-button type="primary" @click="reqLogin()">登錄</el-button>
</div>
</div>
</template>
<style scoped>
.flex-col-center {
display: flex;
flex-direction: column;
justify-content: center
}
</style>到此這篇關(guān)于Vue Form表單的使用,rules格式校驗網(wǎng)絡(luò)校驗,鍵盤按鍵監(jiān)聽的文章就介紹到這了,更多相關(guān)Vue Form表單rules格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Element-Plus的ClickOutside指令導(dǎo)致內(nèi)存泄漏的解決辦法
這篇文章給大家介紹了Element-Plus的ClickOutside指令導(dǎo)致內(nèi)存泄漏的解決辦法,文中給出了詳細的解決辦法,遇到同樣問題的小伙伴可以參考閱讀一下本文2024-01-01
vue.js表單驗證插件(vee-validate)的使用教程詳解
這篇文章主要介紹了vue.js表單驗證插件(vee-validate)的使用,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05
Vue+(SSE)EventSource實現(xiàn)流式輸出過程
文章介紹了如何在Vue項目中使用EventSource和FetchEventSource實現(xiàn)服務(wù)器端事件驅(qū)動推送,并分享了它們的特點、優(yōu)勢以及使用流程,通過設(shè)置請求頭和請求方式,解決了EventSource無法設(shè)置這些屬性的問題2025-12-12

