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

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

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
};
}
});

附上测试例子

<form id="ValidataForm">
<input data-required="true" data-name="名称" data-type="required" value="">
<input data-required="true" data-name="昵称" data-type="hello">
<input data-required="true" data-name="日期" data-type="required|GreaterThanNow" type="date">
<button id="Send">提交</button>
</form>
<script src="~/js/plugs/jquery-3.3.1.js"></script>
<script src="~/js/Dictionary.js"></script>
<script src="~/js/ValidateForm.js"></script>
<script src="~/js/ValidateExtension.js"></script>
<script type="text/javascript">
$("#Send").click(function () {
validateForm.Validate("#ValidataForm");
});
</script>

JQuery插件,轻量级表单模型验证(续 一)的更多相关文章

  1. JQuery插件,轻量级表单模型验证(续 二)

    好不容易,有心思,那就把没做完的JQuery轻量级表单验证做完吧 之前做到了空参数验证的,现在增加带参数的验证. 附上html <form id="ValidataForm" ...

  2. JQuery插件,轻量级表单模型验证

    附上源码和Demo段 var validataForm = (function(model) { model.Key = "[data-required='true']"; mod ...

  3. 自己编写jQuery插件之表单验证

    自己编写jQuery插件之表单验证 吐个嘈先:最近状态不咋滴,真是什么都不想干,不想上班,做什么都没动力,觉得没意思.不想这样,不想这样,快让这种情绪消失吧,忽忽.... 表单验证在项目中用的还是比较 ...

  4. Jquery插件easyUi表单验证提交

    <form id="myForm" method="post"> <table align="center" style= ...

  5. MVC遇上bootstrap后的ajax表单模型验证

    MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...

  6. jQuery插件 -- Form表单插件jquery.form.js<转>

    jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Form有两个核心方法 -- ajaxForm() 和 ajaxSubmi ...

  7. (转)jQuery插件 -- Form表单插件jquery.form.js

    beforeSubmit: validate function validate(formData, jqForm, options) { //在这里对表单进行验证,如果不符合规则,将返回false来 ...

  8. jQuery插件 -- Form表单插件jquery.form.js

    http://blog.csdn.net/zzq58157383/article/details/7718956 http://my.oschina.net/i33/blog/77250

  9. 表单验证代码实例:jquery.validate.js表单验证插件

    jquery.validate.js是JQuery旗下的一个验证插件,借助JQuery的优势,我们可以迅速验证一些常见的输入,并且可以自己扩充自己的验证方法.使用前请先下载必要的JQuery插件:jq ...

随机推荐

  1. 学习笔记三:基础篇Linux基础

    Linux基础 直接选择排序>快速排序>基数排序>归并排序 >堆排序>Shell排序>冒泡排序=冒泡排序2 =直接插入排序 一.Linux磁盘分区表示 Linux中 ...

  2. 关于jquery.unobtrusive-ajax.js 回调函数无效 的解决办法

    今天新项目的时候写MVC的时候使用到了Ajax.BeginForm,发现它的回调函数怎么都不响应,最后在网上查找了相关资料跟自己写的一些代码测试, 总算找到了原因:jquery.unobtrusive ...

  3. bzoj2697特技飞行*

    bzoj2697特技飞行 题意: N个单位时间,每个单位时间可以进行一项特技动作,可选的动作有K种,每种动作有一个刺激程度Ci.每次动作的价值为(距上次该动作的时间)*Ci,若为第一次进行该动作,价值 ...

  4. 第七章:Android动画深入分析

    7.1 View动画 View动画的作用对象是View,它支持四种动画效果,分别是平移动画,缩放动画,旋转动画和透明动画. 帧动画也属于View动画,但是帧动画的表现形式和上面的四种变换效果不太一样. ...

  5. solr8.4.1开发测试环境的简单应用

    服务器部署   官网地址 https://lucene.apache.org/solr/  从官网下载http:/ /mirror.bit.edu.cn/apache/lucene/solr/8.4. ...

  6. 题解 CF1354B 【Ternary String】

    题意 给出一个字符串,只包含 \({1,2}\) 或 \({3}\) .从中找出一个长度最短的子串,要求至少包含 \({1,2,3}\) 各一次,并输出其长度. 输入格式 本题有多组测试数据 第一行一 ...

  7. java 成员变量和局部变量的区别

    将对象的存储在数组中会报错 public static void main(String[] args) { ArrayList<Goods> arrayList = new ArrayL ...

  8. 多云架构下,JAVA微服务技术选型实例解析

    [摘要] 本文介绍了基于开源自建和适配云厂商开发框架两种构建多云架构的思路,以及这些思路的优缺点. 微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施. ...

  9. 把若依管理系统部署到Linux

    一.前言 1.非常感谢若依作者为大家提供的非常优质的开源web项目,非常感谢!!! 2.若依官方文档:http://doc.ruoyi.vip/ruoyi/ 3.若依官方链接: 1)若依管理系统官方体 ...

  10. spring oauth2+JWT后端自动刷新access_token

    这段时间在学习搭建基于spring boot的spring oauth2 和jwt整合. 说实话挺折腾的.使用jwt做用户鉴权,难点在于token的刷新和注销. 当然注销的难度更大,网上的一些方案也没 ...