這篇文章主要介紹了關於Vue中Element表單驗證的基本要素,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
Element主要使用了async-validator這個函式庫作為表單驗證
async-validator
主要分成三個部分
async-validator基本上使用
import Validator from 'async-validator' // 规则的描述 const rules = { name: { type: 'string', required: true } } // 根据规则生成验证器 const validator = new Validator(rules) // 要验证的数据源 const source = { name: 'LanTuoXie' } // 验证后的回调函数 function callback (errors, fileds) { if (errors) { // 验证不通过,errors是一个数组,记录那些不通过的错误信息 // fileds是所有数据源的字段名,也即上面的source的'name' // 验证是根据字段名来的,rules.name 对应 source.name。 字段名要一样才会验证 } // 下面是验证通过的逻辑 } // 验证数据源是否符合规则 validator.validate(source, callback)
Validate
#就是上面範例中的validator.validate,是一個函數function(source, [options], callback)source和callback對應上面的範例。
Options
Options有兩個值first: 一個布林值,如果出現欄位不通過,終止驗證後面的欄位
firstFields: 布林值或字串,如果驗證一個欄位時,一個規則不通過,終止驗證下個規則(一個字段,多個規則的情況)
firstFields是針對單一字段多重規則的情況下使用,而
first是針對所有欄位
Rules
#最重要的還是Rules。定義rule可以有三種形式,但是rules欄位名稱一定要跟資料來源source的欄位名稱一致。{ name(rule, 值, callback, source, options) {} }
{ name: { type: 'string', required: true } }
{ name: [{ type : 'string' }, { required: true }] }
type和
required還有哪些用法可以用以及有什麼用?
type: 要被驗證的資料的類型如
url和
number 等
required: 是否必填
pattern:使用正規來驗證
min: 資料的長度的最小值(資料型別必須是
string或
array)
max: 資料的長度的最大值(資料型別必須是
string或
array)
len: 資料的長度必須等於這個值(資料型別必須是
string或
array)
enum: 資料的值必須等於這個枚舉數組某個元素
{ enum: [1, 2, 3] }
transform: 一個鉤子函數,在開始驗證之前可以先處理資料後驗證,如吧
number 轉為
string後再驗證
message: 錯誤的提示訊息可以是字串也可以是jsx標籤
45a2772a6b6107b401db3c9b82c049c2Name is required54bdf357c58b8a65c66d7c19c8e4d114
#validator: 自訂驗證函數以及報錯訊息
validator(rule, value, callback)
object或
array類型的,使用了
fields 或
defaultField
#fields:Deep Rules的時候使用,定義下一層的欄位名稱以及規則
defaultField: Deep Rules的時候使用,所有下一層的欄位都會採用該規則,可以被
fields取代
string:必須是String類型,規則不設定type預設是這個
#number:必須是Number類型,如果後台傳回的資料是字串,可以用
transform轉為Number類型,字串類型的數字('12')不會通過,要注意
boolean: 必須是Boolean類型
method: 必須是Function
#reg :必須是正則RegExp
integer:是Number型別的正整數
float : 是Number類型的浮點數
array: 是Array.isArray通過的陣列
object: Array.isArray不通過的Object型別
#enum: 要先定義enum,然後值必須是enum某個值
date:必須是Date物件的實例
#url: String類型且符合連結格式
hex
#email: String類型,且符合郵件信箱格式
cosnt urls = ['http://www.baidu.com', 'http://www.baidu.com'] // 一个urls的数组, const rules = { urls: { type: 'array', required: true, defaultField: { type: 'url' } } }
const ids = { name: 'LanTuoXie', age: 12, spc: '帅' } const rules = { ids: { type: 'object', required: true, fields: { name: { type: 'string', required: true }, age: { type: 'number', required: true, tranform: Number }, spc: { type: 'string', required: true } } } }
validator(rule, value, callback)
rule
: 记录了验证字段的字段名以及规则的信息
value
: 要验证的值
callback
: 如果callback()
代表验证通过,如果callback(new Error('错误要提示的信息'))
代表验证不通过
// 验证是[min, max]范围内的正整数 const betweenInt = (min, max) => (rule, v, cb) => { const isBetween = v >= min && v <= max const isInt = /^[0-9]+$/.test(v) if (isBetween && isInt) return cb() return cb(new Error(`要求是在${min}到${max}的正整数 [${min}, ${max}]`)) } const rules = { num: { validator: betweenInt(1, 5), required: true } }
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
vue项目中如何实现保存头像以及base64字符串转图片的功能
以上是Vue中Element表單驗證的基本要素的詳細內容。更多資訊請關注PHP中文網其他相關文章!