ele支持表单验证,对于数字的验证,是这样的
复制代码
addRules: { mileageStart: [ { type: 'number', message: '必须为数字值', trigger: 'blur'} ]}复制代码
坑一 要注意数字的验证需要写v-model.number,才会起作用
坑二 出现的问题是,可以输入数字开头的任意字符串(比如1dede), 于是我加了个 type="number",也就是复制代码
这就不能输入非数字,但是e可以,他会转化成3个0,这不用管了。
但是产品才不会让你这么轻松,比如需要保留小数点后2位。那就用自定义的表单验证吧。复制代码
// 保留2位小数的验证var checkNumber = (rule, value, callback) => { var num2 = /^([1-9][\d]{0,}|0)(\.\d{1,2})?$/ value = '' + value if (isNaN(value) || !(num2.test(value))) { callback(new Error('请输入数字, 保留2位小数')); } else { callback(); }}addRules: { mileageStart: [ { validator: checkNumber, trigger: 'blur'} ]}复制代码
这里的num2在console上可以测试,
坑三 需要num2.test(字符串)才会有效果, num2.test(数字)的反应很奇怪,不能正常进行验证 因为一开始验证4.这个数字是通过的,于是我就加了value = '' + value,转化成了字符串,还是验证通过, 按照这个正则表达式不应该通过呀坑四 我就打印这个value,发现输入的4.到这里会变成4,那就是v-model.number和type="number"干的好事了,因为都用正则验证了,这里的number自然是不需要了,就去掉,然后这才ok