博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JQuery插件,轻量级表单模型验证(续 一)
阅读量:5327 次
发布时间:2019-06-14

本文共 4390 字,大约阅读时间需要 14 分钟。

之前的代码结构,不方便扩展多结构的模型验证

重新结构设计了一下验证模型核心

var validateForm = (function(model) {    model.Key = "[data-required='true']";    model.ElementList = new Array();    model.FunctionDictionary = new Dictionary();    model.ToastrCustom = function (msg) {        alert(msg);    }    model.AddElement = function (name) {        model.ElementList.push(name);    };    model.AddFunction = function (name, func) {        model.FunctionDictionary.add(name, func);    };    model.Validate = function (formName) {        for (var i = 0; i < model.ElementList.length; i++) {            var thisObj = model.ElementList[i];            var str = formName + " " + thisObj + model.Key;            var elements = $(str);            for (var j = 0; j < elements.length; j++) {                var element = elements.eq(j);                var value = element.val();                var elementType = element.data().type;                if (elementType.indexOf("|") > -1) {                    var splitStrs = elementType.split("|");                    for (var index in splitStrs) {                        var splitStr = splitStrs[index];                        var find = model.FunctionDictionary.contains(splitStr);                        if (find) {                            if (splitStrs.indexOf(":") > -1) {                                var params = splitStr.split(":");                                var func = model.FunctionDictionary.find(params.eq(0));                                if (func) {                                    var result = func(value, element);                                    if (result.status) {                                        var errorInfo = result.message;                                        model.ToastrCustom(errorInfo);                                        return;                                    }                                }                            }                            else {                                var func = model.FunctionDictionary.find(splitStr);                                if (func) {                                    var result = func(value, element);                                    if (result.status) {                                        var errorInfo = result.message;                                        model.ToastrCustom(errorInfo);                                        return;                                    }                                }                            }                        }                    }                }                else {                    var func = model.FunctionDictionary.find(elementType);                    if (func) {                        var result = func(value, element);                        if (result.status) {                            var errorInfo = result.message;                            model.ToastrCustom(errorInfo);                            return;                        }                    }                }            }        }    };    model.ElementList.push("input");    model.ElementList.push("select");    model.FunctionDictionary.add("required", function (value, element) {        var name = element.data().name;        return {            status: (value === ""),            message: (value === "" && name + "不能为空")        };    });    return model;})(window.validateForm || {});

扩展了多验证方式,用“|”分隔

在Dictionary类扩展了一个方法

function contains(key) {    var keys = Object.keys(this.datastore);    for (var index in keys) {        if (keys[index].indexOf(key) > -1)        {            return true        }            }    return false;}
this.contains = contains;

方便查找是否包含Key

写了一个ValidateExtension.js

之前手误的Validata统一改为Validate

ValidateExtension.js内代码如下

validateForm.AddFunction("GreaterThanNow", function (value, element) {    var name = element.data().name;    try {        var date = value;        date = date.substring(0, 19);        date = date.replace(/-/g, '/');        var valueDate = new Date(date);        var now = new Date();        var check = (now > valueDate);        return {            status: check,            message: (check && name + "不能为小于当前日期")        };    } catch (error) {        console.log(error);        return {            status: false,            message: error.message        };    }});

附上测试例子

 

转载于:https://www.cnblogs.com/NCoreCoder/p/9796622.html

你可能感兴趣的文章
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>
c++中的string常用函数用法总结!
查看>>
界面交互之支付宝生活圈pk微信朋友圈
查看>>
[DLX精确覆盖+打表] hdu 2518 Dominoes
查看>>
MyBatis
查看>>
Sklearn实现逻辑回归
查看>>
SuperMap iServerJava 6R扩展领域开发及压力测试---判断点在那个面内(1)
查看>>
Week03-面向对象入门
查看>>
MongoDB 状态监控、备份复制及自动分片
查看>>
《大道至简》阅读笔记一
查看>>
一个控制台程序,模拟机器人对话
查看>>
web.xml 中加载顺序
查看>>
mysql学习之安装(一)
查看>>
[数据库]关于主键与外键
查看>>
pycharm激活地址
查看>>
hdu 1207 四柱汉诺塔
查看>>