Form組件提供表單驗證的功能,只需要通過rules屬性傳入約定的驗證規(guī)則,并將Form-Item的prop屬性設(shè)置為需校驗的字段名即可。
rules中單個表單域校驗規(guī)則可以包含多個數(shù)組,每個數(shù)組即是一條校驗規(guī)則:
name: [
{ required: true, message: '請輸入活動名稱', trigger: 'blur' },
{ min: 3, max: 5, message: '長度在 3 到 5 個字符', trigger: 'blur' }
]
數(shù)組中的單個校驗規(guī)則對象中包含required/message/trigger/min/max等參數(shù)。
type
表明要使用驗證器的類型,類似于數(shù)據(jù)格式校驗,使用這個,可以對一些特定的字段進行校驗,不用像之前那樣寫正則了。
可識別的類型值有:
- string: 字符串類型(默認值)
- number: 數(shù)字類型
- boolean:布爾類型
- method: 函數(shù)類型
- regexp:正則表達式
- integer: 整型
- float: 雙精度浮點型數(shù)字
- array: 數(shù)組類型
- object: 對象類型
- enum: 枚舉值
- date: 日期格式
- url: 網(wǎng)址格式
- hex: 16進制數(shù)字
- email: 電子郵箱格式
- any: 任意類型
required
必填字段,即非空驗證。
pattern
正則表達式,如果需要驗證手機號碼之類的,可以直接編寫正則表達式配置道校驗規(guī)則中,就不需要自己去校驗了。
{ type : "string" , required: true , pattern : /^[a-z]+$/ }
min/max
判斷數(shù)據(jù)大小范圍,通常對數(shù)字大小范圍做校驗。對于字符串和數(shù)組類型,將根據(jù)長度進行比較。
{ required: true, message: '請輸入活動名稱', trigger: 'blur' },
{ min: 3, max: 5, message: '長度在 3 到 5 個字符', trigger: 'blur' }
len
長度驗證
enum
枚舉值驗證
role: {type: "enum", enum: ['admin', 'user', 'guest']}
whitespace
驗證是否只有空格(如果沒有該配置,則全空格的輸入也是有效的)
transform:
有時有必要在驗證之前轉(zhuǎn)換值,以強制或以某種方式對其進行清理。為此transform,向驗證規(guī)則添加一個功能。在驗證之前,先轉(zhuǎn)換屬性,然后將其重新分配給原對象,以更改該屬性的值。
// 校驗
transform: [
{
type: 'enum',
enum: [2,4,6],
message: `結(jié)果不存在`,
trigger: ['change', 'blur'],
transform(value) {
return Number(value * 2)
}
}
]
如上,只有輸入1、2、3的時候才能校驗通過。
貌似這個只能輔助校驗,并不能改變組件綁定變量本身的值。
fields:
深層規(guī)則,可以通過將嵌套規(guī)則分配給規(guī)則的屬性來驗證object或array類型的驗證規(guī)則,
address: {
type: "object", required: true,
fields: {
street: {type: "string", required: true},
city: {type: "string", required: true},
zip: {type: "string", required: true, len: 8, message: "invalid zip"}
}
}
roles: {
type: "array", required: true, len: 3,
fields: {
0: {type: "string", required: true},
1: {type: "string", required: true},
2: {type: "string", required: true}
}
}