本篇內容主要講解“vue如何使用rules實現表單字段驗證”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“vue如何使用rules實現表單字段驗證”吧!
表單內容
<!-- 表單 --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item label="用戶名稱:" prop="userName"> <el-input v-model="rulesForm.userName" maxlength="50"/> </el-form-item> </el-form>
<el-form>:代表這是一個表單
<el-form> -> ref:表單被引用時的名稱,標識
<el-form> -> rules:表單驗證規則
<el-form> -> model:表單數據對象
<el-form> -> label-width:表單域標簽的寬度,作為 Form 直接子元素的 form-item 會繼承該值
<el-form> -> <el-form-item>:表單中的每一項子元素
<el-form-item> -> label:標簽文本
<el-form-item> -> prop:表單域 model 字段,在使用 validate、resetFields 方法的情況下,該屬性是必填的
<el-input>:輸入框
<el-input> -> v-model:綁定的表單數據對象屬性
<el-input> -> style:行內樣式
<el-input> -> maxlength:最大字符長度限制
data 數據
data() { return { // 省略別的數據定義 ... // 表單驗證 formRules: { userName: [ {required: true,message: "請輸入用戶名稱",trigger: "blur"} ] } } }
formRules:與上文 '表單內容' 中 <el-form> 表單的 :rules 屬性值相同
userName:與上文 '表單內容' 中 <el-form-item> 表單子元素的 prop 屬性值相同
驗證內容是:必填,失去焦點時驗證,如果為空,提示信息為 '請輸入用戶名稱'
表單內容
<!-- 表單 --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item label="銀行名稱:" prop="accountName" :rules="[{required:true,message:'請輸入銀行名稱',trigger:'blur'}]"> <el-input v-model="rulesForm.accountName" maxlength="50"/> </el-form-item> </el-form>
<el-form-item> -> rules:和第一種方式表現的效果一致,只是寫法不一樣,這里不再贅述
data 數據沒有內容
表單內容
<!-- 表單 --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item label="銀行卡號:" prop="accountNumber"> <el-input v-model="rulesForm.accountNumber" maxlength="19"/> </el-form-item> </el-form>
表單內容與第一種方式寫法一致,這里不再贅述
script 內容
<script> // 引入了外部的驗證規則 import { validateAccountNumber } from "@/utils/validate"; // 判斷銀行卡賬戶是否正確 const validatorAccountNumber = (rule, value, callback) => { if (!value) { return callback(new Error("請輸入賬戶信息")); } else { if (validateAccountNumber(value)) { callback(); } else { return callback(new Error('賬號格式不正確')) } } }; export default { data() { return { // 省略別的數據定義 ... // 表單驗證 formRules: { accountNumber: [ {required: true,validator: validatorAccountNumber,trigger: "blur"} ] } } } } </script>
import:先引入了外部的驗證規則
const:定義一個規則常量,常量名可變, '= (rule, value, callback) => {}' 為固定格式,value 入參為驗證的字段值
formRules -> accountNumber:表單驗證中使用 validator 指定自定義校驗規則常量名稱
validate.js
/* 銀行賬戶 */ export function validateAccountNumber(str) { const reg = /^([1-9]{1})(\d{14}|\d{18})$/ return reg.test(str) }
驗證規則
以上都是在失去焦點時的驗證,下面來分析一下如何在表單提交時驗證
1. 表單的提交按鈕
<!-- 表單 --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item> <el-button type="primary" @click="onSubmit('rulesForm')">保存</el-button> <el-button @click="cancel">取消</el-button> </el-form-item> </el-form>
<el-button>:按鈕
<el-button> -> type:按鈕類型
<el-button> -> @click:按鈕點擊時觸發的事件,這里注意方法的入參為 'rulesForm',這里要與 <el-form> 表單的 rel 屬性值一致
2. methods 方法
methods: { // 保存 onSubmit(formName) { this.$refs[formName].validate(valid => { if (valid) { console.log("success submit!!"); }else{ console.log("error submit!!"); } }); }, // 取消 cancel() { } }
this.$refs[formName].validate:formName 就是傳入的 'rulesForm',與 <el-form> 表單的 rel 屬性值一致,這樣就指定好需要驗證的表單了
完整示例代碼如下
1. rules.vue
<template> <div class="app-container"> <el-tabs v-model="activeName"> <el-tab-pane label="表單" name="rulesPane" @tab-click="handleClick"> <!-- 表單 --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item label="用戶名稱:" prop="userName"> <el-input v-model="rulesForm.userName" maxlength="50"/> </el-form-item> <el-form-item label="銀行名稱:" prop="accountName" :rules="[{required:true,message:'請輸入銀行名稱',trigger:'blur'}]"> <el-input v-model="rulesForm.accountName" maxlength="50"/> </el-form-item> <el-form-item label="銀行卡號:" prop="accountNumber"> <el-input v-model="rulesForm.accountNumber" maxlength="50"/> </el-form-item> <el-form-item> <el-button type="primary" @click="onSubmit('rulesForm')">保存</el-button> <el-button @click="cancel">取消</el-button> </el-form-item> </el-form> </el-tab-pane> </el-tabs> </div> </template> <script> import { validateAccountNumber } from "@/utils/validate"; // 判斷銀行卡賬戶是否正確 const validatorAccountNumber = (rule, value, callback) => { if (!value) { return callback(new Error("請輸入賬戶信息")); } else { if (validateAccountNumber(value)) { callback(); } else { return callback(new Error('賬號格式不正確')) } } }; export default { name: "rules", data() { return { activeName: "rulesPane", defaultProps: { children: "children", label: "label" }, rulesForm: { }, // 表單驗證 formRules: { userName: [ { required: true, message: "請輸入用戶名稱", trigger: "blur" } ], accountNumber: [ { required: true, validator: validatorAccountNumber, trigger: "blur" } ], } }; }, created() {}, mounted() {}, methods: { handleClick(tab) { }, // 取消 cancel() { }, // 保存 onSubmit(formName) { this.$refs[formName].validate(valid => { if (valid) { console.log("success submit!!"); } else { console.log("error submit!!"); return false; } }); } } }; </script> <style lang="scss"> </style>
2. validate.js
/* 銀行賬戶 */ export function validateAccountNumber(str) { const reg = /^([1-9]{1})(\d{14}|\d{18})$/ return reg.test(str) }
效果圖
到此,相信大家對“vue如何使用rules實現表單字段驗證”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。