zpw-vue-form
Version:
vue 表单系统
535 lines (534 loc) • 16.1 kB
JavaScript
/**
* @description 表单验证
* @module validate
* @alias 表单验证
* @author pengwei.zhao
* @copyright @2013-2020 pengwei.zhao. | pengwei.zhao版权所有
* @version 1.0.0
* @const{(Object.)}
* @readonly
*/
const validate = {
/**
* @function notNull
* @summary 验证字符串不能为空
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"姓名",
type:"input-text",
rule:"notNull",
placeholder:"请输入姓名"
* });
*/
notNull(form, value, callback){
if(form.data.type == "input-address"){
form.data.validForm().then(res => {
if(res){
callback();
}
});
}else if (value == undefined||value == "" ||
(form.data.type == "input-date"&&value.length < 1) ||
(form.data.type == "input-text"&&(value+"").trim().length < 1) ||
(form.data.type == "input-checkbox"&&value.length < 1)
) {
if(form.data.type == "input-radio"){
callback(new Error('请选择'+ rule.data.name))
}else{
callback(new Error(form.data.name + '不能为空'))
}
} else {
callback()
}
},
/**
* @function phone
* @summary 验证手机号码
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"手机号",
type:"input-phone",
rule:"phone",
placeholder:"请输入手机号"
* });
*/
phone(form, value, callback){
if (value&&!/^1[34578]\d{9}$/.test((value+"").trim()*1)) {
callback(new Error(form.data.name + '不正确'))
} else {
callback()
}
},
/**
* @function email
* @summary 验证email
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"email",
type:"input-email",
rule:"email",
placeholder:"请输入email"
* });
*/
email(form, value, callback){
if (value&&!/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test((value+"").trim())) {
callback(new Error(form.data.name + '不是正确的email格式'))
} else {
callback()
}
},
/**
* @function number
* @summary 验证是否为数字
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"数字",
type:"input-number",
rule:"number",
placeholder:"请输入数字"
* });
*/
number(rule, value, callback){
if (!/^\d*(.?)(\d)*\d$/gi.test(value)) {
callback(new Error(rule.data.name + '的值不是数字'))
} else {
callback()
}
},
/**
* @function number4
* @summary 验证数值是否为4位
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"4位数字",
type:"input-number",
rule:"number4",
placeholder:"请输入4位数字"
* });
*/
number4(rule, value, callback){
if (value.length != 4) {
callback(new Error(rule.data.name + '的值不是4位'))
} else {
callback()
}
},
/**
* @function number11
* @summary 验证数值是否为4位
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"11位数字",
type:"input-number",
rule:"number11",
placeholder:"请输入11位数字"
* });
*/
number11(rule, value, callback){
if (value&&value != 11) {
callback(new Error(rule.data.name + '的值不正确'))
} else {
callback()
}
},
/**
* @function float
* @summary 验证数值是否是浮点数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"浮点数",
type:"input-number",
rule:"float",
placeholder:"请输入浮点数"
* });
*/
float(rule, value, callback){
if (value&&!(/^(-?\d+)?(\.\d+)$/.test(value))) {
callback(new Error(rule.data.name + '不是浮点数'))
} else {
callback()
}
},
/**
* @function int
* @summary 验证数值是否是整数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"整数",
type:"input-number",
rule:"int",
placeholder:"请输入整数"
* });
*/
int(rule, value, callback){
if (value&&!/^-?\d+$/.test(value)) {
callback(new Error(rule.data.name + '不是整数'))
} else {
callback()
}
},
/**
* @function http
* @summary 验证数值是否是http(s)地址
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"http地址",
type:"input-text",
rule:"http",
placeholder:"请输入http(s)地址"
* });
*/
http(rule, value, callback){
if (value&&!/^https+:\/\/./.test(value)) {
callback(new Error(rule.data.name + '不是http(s)地址'))
} else {
callback()
}
},
/**
* @function (0-+∞)
* @summary 验证数值是否是大于0的数字
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于0的数字",
type:"input-number",
rule:"(0-+∞)",
placeholder:"请输入大于0的数字"
* });
*/
"(0-+∞)"(rule, value, callback){
if (value&&!(!isNaN(value) && value > 0)) {
callback(new Error(rule.data.name + '不是大于0的数字'))
} else {
callback()
}
},
/**
* @function [1-1e5]
* @summary 验证数值是否是大于等于1且小于等于10000的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于等于1且小于等于10000的数",
type:"input-number",
rule:"[1-1e5]",
placeholder:"请输入大于等于1且小于等于10000的数"
* });
*/
"[1-1e5]"(rule, value, callback){
if (value&&!(1 <= value && value <= 10000)) {
callback(new Error(rule.data.name + '不是大于等于1且小于等于10000的数'))
} else {
callback()
}
},
/**
* @function [1-+10]
* @summary 验证数值是否是大于等于1且小于等于10的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于等于1且小于等于10的数",
type:"input-number",
rule:"[1-+10]",
placeholder:"请输入大于等于1且小于等于10的数"
* });
*/
"[1-+10]"(rule, value, callback){
if (value&&!(value >= 1 && value <= 10)) {
callback(new Error(rule.data.name + '不是大于等于1且小于等于10的数'))
} else {
callback()
}
},
/**
* @function [1-+5]
* @summary 验证数值是否是大于等于1且小于等于5的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于等于1且小于等于5的数",
type:"input-number",
rule:"[1-+5]",
placeholder:"请输入大于等于1且小于等于5的数"
* });
*/
"[1-+5]"(rule, value, callback){
if (value&&!(value >= 1 && value <= 5)) {
callback(new Error(rule.data.name + '不是大于等于1且小于等于5的数'))
} else {
callback()
}
},
/**
* @function [0-10]
* @summary 验证数值是否是大于等于0且小于等于10的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于等于0且小于等于10的数",
type:"input-number",
rule:"[0-10]",
placeholder:"请输入大于等于0且小于等于10的数"
* });
*/
"[0-10]"(rule, value, callback){
if (value&&!(value >= 0 && value <= 10)) {
callback(new Error(rule.data.name + '不是大于等于0且小于等于10的数'))
} else {
callback()
}
},
/**
* @function [0-1]
* @summary 验证数值是否是0到1的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"0到1的数",
type:"input-number",
rule:"[0-1]",
placeholder:"请输入0到1的数"
* });
*/
"[0-1]"(rule, value, callback){
if (value&&!/^[0-1]$|^0?\.[0-9]+$/.test(value)) {
callback(new Error(rule.data.name + '不是0到1的数'))
} else {
callback()
}
},
/**
* @function (0-1)
* @summary 验证数值是否大于0小于1的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于0小于1的数",
type:"input-number",
rule:"(0-1)",
placeholder:"请输入大于0小于1的数"
* });
*/
"(0-1)"(rule, value, callback){
if (!(0 < value && value < 1)) {
callback(new Error(rule.data.name + '不是大于0小于1的数'))
} else {
callback()
}
},
/**
* @function (0-+∞)
* @summary 验证数值是否大于0小于1的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于0小于1的数",
type:"input-number",
rule:"(0-+∞)",
placeholder:"请输入大于0小于1的数"
* });
*/
"(0-+∞)"(rule, value, callback){
if (value&&value <= 0) {
callback(new Error(rule.data.name + '不是大于0的数'))
} else {
callback()
}
},
/**
* @function [1-+∞)
* @summary 验证数值是否大于或等于1的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于或等于1的数",
type:"input-number",
rule:"[1-+∞)",
placeholder:"请输入大于或等于1的数"
* });
*/
"[1-+∞)"(rule, value, callback){
if (value&&value < 1) {
callback(new Error(rule.data.name + '不是大于或等于1的数'))
} else {
callback()
}
},
/**
* @function [0.5-1]
* @summary 验证数值是否大于或等于0.5小于或等于1的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于或等于0.5小于或等于1的数",
type:"input-number",
rule:"[0.5-1]",
placeholder:"请输入大于或等于0.5小于或等于1的数"
* });
*/
"[0.5-1]"(rule, value, callback){
if (!(0.5 <= value && value <= 1)) {
callback(new Error(rule.data.name + '不是大于或等于0.5小于或等于1的数'))
} else {
callback()
}
},
/**
* @function [0-+∞)
* @summary 验证数值是否大于或等于0的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于或等于0的数",
type:"input-number",
rule:"[0-+∞)",
placeholder:"请输入大于或等于0的数"
* });
*/
"[0-+∞)"(rule, value, callback){
if (value&&value < 0) {
callback(new Error(rule.data.name + '不是大于或等于0的数'))
} else {
callback()
}
},
/**
* @function [2-+∞)
* @summary 验证数值是否大于或等于2的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于或等于2的数",
type:"input-number",
rule:"[2-+∞)",
placeholder:"请输入大于或等于2的数"
* });
*/
"[2-+∞)"(rule, value, callback){
if (value&&value < 2) {
callback(new Error(rule.data.name + '不是大于或等于2的数'))
} else {
callback()
}
},
/**
* @function [-1-+∞)
* @summary 验证数值是否大于或等于-1的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于或等于-1的数",
type:"input-number",
rule:"[-1-+∞)",
placeholder:"请输入大于或等于-1的数"
* });
*/
"[-1-+∞)"(rule, value, callback){
if (value&&value < -1) {
callback(new Error(rule.data.name + '不是大于或等于-1的数'))
} else {
callback()
}
},
/**
* @function (0-0.5)
* @summary 验证数值是否大于0小于0.5的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于0小于0.5的数",
type:"input-number",
rule:"(0-0.5)",
placeholder:"请输入大于0小于0.5的数"
* });
*/
"(0-0.5)"(rule, value, callback){
if (value&&!(0 < value && value < 0.5)) {
callback(new Error(rule.data.name + '不是大于0小于0.5的数'))
} else {
callback()
}
},
/**
* @function [1e-5-1e5]
* @summary 验证数值是否大于等于0.00001小于等于100000的数
* @param {Object} form - 表单实列
* @param {string} value - 表单值
* @param {requestCallback} callback - 回调是否成功
* @example notNull({
qid:"name",
name:"大于等于0.00001小于等于100000的数",
type:"input-number",
rule:"[1e-5-1e5]",
placeholder:"请输入大于等于0.00001小于等于100000的数"
* });
*/
"[1e-5-1e5]"(rule, value, callback){
if (value&&!(0.00001 <= value && value <= 100000)) {
callback(new Error(rule.data.name + '不是大于等于0.00001小于等于100000的数'))
} else {
callback()
}
}
}
/**
* @export validate
*/
export default validate;