UNPKG

vv-jsdt

Version:

validate based on vue2

70 lines (62 loc) 2.09 kB
/** * Created by chunyang.gao on 17/4/14. */ import { is } from './util'; export function check(rule, field, value, isArray) { if (Array.isArray(rule)) { return rule.map(item => check.call(this, item, field, value, true)).indexOf(false) === -1; } let vm = this; const $rules = this.VV.$rules; const $errors = this.VV.$errors; const regex = is('String', rule) ? $rules[rule] : is('String', rule.test || rule.remote) ? $rules[rule.test] : rule; if (!regex) { console.warn(' rule does not exist: ' + (rule.test || rule.toString())); return; } if (!regex.test && !regex.remote) { console.warn(' rule does not exist: ' + (rule.test || rule.remote)); return; } regex.message = rule.message || regex.message; let valid = true; if (is('Function', regex.test)) { valid = regex.test.call(this, value); } else if (is('Function', regex.remote)) { var _self = this; regex.remote.call(this, value, function (bol) { if (bol) { valid = true; vm.$delete($errors, field); } else { console.log(_self); valid = false; vm.$set($errors, field, regex.message); } }); } else { valid = regex.test.test(value); } if (isArray) { const oldError = $errors[field]; if (valid) { vm.$delete($errors, field); } else if (!oldError) { $errors[field] = regex.message; } } else { const error = $errors[field] || []; const oldError = error.indexOf(regex.message); if (valid) { oldError > -1 && error.splice(oldError, 1); if (!error.length) vm.$delete($errors, field); } else if (oldError < 0) { error.push(regex.message); vm.$set($errors, field, error); } } const hasError = Boolean(Object.keys($errors).length); this.VV.valid = !hasError; this.VV.invalid = hasError; return valid; }