You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
971 B
47 lines
971 B
export default (form, rules) => { |
|
return new Promise((resolve, reject) => { |
|
if (form && rules) { |
|
let pass = true |
|
a: for (let key in rules) { |
|
let rule = rules[key] |
|
if (Array.isArray(rule)) { |
|
for (let i = 0; i < rule.length; i++) { |
|
const result = validate(rule[i], form[key]) |
|
if (!result) { |
|
pass = false |
|
break a |
|
} |
|
} |
|
} else { |
|
const result = validate(rule, form[key]) |
|
if (!result) { |
|
pass = false |
|
break a |
|
} |
|
} |
|
} |
|
if (pass) resolve() |
|
else reject() |
|
} else { |
|
reject('需校验的对象为空') |
|
} |
|
}) |
|
} |
|
|
|
const validate = (rule, value) => { |
|
let pass = true |
|
if (rule && rule.pattern && !rule.pattern.test(value)) { |
|
uni.showToast({ |
|
title: rule.message || '校验失败', |
|
icon: 'none' |
|
}) |
|
pass = false |
|
} else if (rule && rule.required && !value) { |
|
uni.showToast({ |
|
title: rule.message || '校验失败', |
|
icon: 'none' |
|
}) |
|
pass = false |
|
} |
|
return pass |
|
}
|
|
|