數(shù)量:(請(qǐng)輸入1-999的正整數(shù))
// 只是截取表單里的item送淆,如果看不懂只能證明你菜得無藥可救咯章鲤。
<el-form-item
:prop="'form.number"
:rules="numberRule">
<el-input type="text" v-model.number="form.number"></el-input>
</el-form-item>
// data部分
numberRule: [
{ required: true, message: '請(qǐng)輸入', trigger: 'blur' },
{
validator(rule, value, callback) {
if (Number.isInteger(Number(value)) && Number(value) > 0 && Number(value) < 999) {
callback()
} else {
callback(new Error('請(qǐng)輸入1-999的正整數(shù)'))
}
},
trigger: 'blur'
}
]
原先使用了正則摊灭,可能是正則不夠變態(tài),反正例如空數(shù)組败徊,空對(duì)象帚呼,null,undefined皱蹦,NaN驗(yàn)證不了煤杀,然后驗(yàn)證不了000,這是我正則的問題沪哺,不過反正我最后推翻了正則沈自,網(wǎng)上還有使用正整數(shù)除以1一定會(huì)整除來做,也就是 number%1 === 0辜妓】萃荆可是還是有缺陷因?yàn)檫€得判斷特殊符號(hào)和英文字母,你得確定是數(shù)字才行籍滴,所以得再加一層柔袁。最后我都推翻了,為了跟上潮流异逐!使用es6的isInteger()方法。Number.isInteger()用來判斷一個(gè)值是否為整數(shù)插掂。
價(jià)格:(大于零小于十萬不超過三位小數(shù))
// 只是截取表單里的item灰瞻,如果看不懂只能證明你菜得無藥可救咯。
<el-form-item
:prop="'form.price"
:rules="priceRule">
<el-input type="text" v-model.number="form.price"></el-input>
</el-form-item>
// data部分
priceRule: [
{ required: true, message: '請(qǐng)輸入', trigger: 'blur' },
{
validator(rule, value, callback) {
var reg = /^-?\d{1,5}(?:\.\d{1,3})?$/
if (reg.test(value)) {
callback()
} else {
callback(new Error('請(qǐng)輸入大于零小于十萬不超過三位小數(shù)的數(shù)字'))
}
},
trigger: 'blur'
}
],
使用了正則辅甥,記住很多人喜歡用match()方法酝润,建議放棄使用test方法。