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

本文共 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

你可能感兴趣的文章
List_统计输入数值的各种值
查看>>
学习笔记-KMP算法
查看>>
Timer-triggered memory-to-memory DMA transfer demonstrator
查看>>
跨域问题整理
查看>>
[Linux]文件浏览
查看>>
64位主机64位oracle下装32位客户端ODAC(NFPACS版)
查看>>
获取国内随机IP的函数
查看>>
今天第一次写博客
查看>>
江城子·己亥年戊辰月丁丑日话凄凉
查看>>
Spring Mvc模式下Jquery Ajax 与后台交互操作
查看>>
(转)matlab练习程序(HOG方向梯度直方图)
查看>>
『Raid 平面最近点对』
查看>>
【ADO.NET基础-数据加密】第一篇(加密解密篇)
查看>>
C语言基础小结(一)
查看>>
STL中的优先级队列priority_queue
查看>>
UE4 使用UGM制作血条
查看>>
浏览器对属性兼容性支持力度查询网址
查看>>
OO学习总结与体会
查看>>
虚拟机长时间不关造成的问题
查看>>
面试整理:Python基础
查看>>