// // example // // 普通input框必输, blur 时触发校验 // [Validator.RequiredBlur()] // // 普通 select, radio, datepicker 必输, change 时触发校验 // [Validator.RequiredChange()] // // 固定字符长度校验 // [ // Validator.RequiredBlur(), // Validator.StrLength(4) // ] // // 字符长度范围校验 // [ // Validator.RequiredBlur(), // Validator.StrRange(4,8) // ] // // 数字位数范围校验 // [ // Validator.RequiredBlur(), // // 整数位不超过 5位,小数位不超过2位 // Validator.CurrencyRange(5, 2) // ], // // 特殊校验 // [ // Validator.RequiredBlur(), // Validator.func(() => { // return true // }) // ] export default { CurrencyRange (count, precision) { let reg = new RegExp(`^[\\d]{1,${count}}[\\.]{0,1}[\\d]{0,${precision}}$`, 'g') return { message: `数字整数位不得超过${count}位,小数位不得超过${precision}`, pattern: reg, trigger: 'change' } }, RequiredBlur (flag = true) { return { required: flag, message: '该项为必输项', trigger: 'blur' } }, RequiredChange (flag = true) { return { required: flag, message: '该项为必输项', trigger: 'change' } }, StrRange (min, max, trigger = 'blur') { return { min: min, max: max, message: `字符串长度为${min}-${max}位`, trigger: trigger } }, StrLength (length, trigger = 'blur') { return { len: length, message: `字符串长度需为${length}`, trigger: trigger } }, func (judgeFunc, trigger = 'change') { return { async validator(rule, value, callback) { let res = await judgeFunc() if (res == true) { callback() } else { callback(new Error(res)) } }, trigger: trigger } } }