jQuery轻量级表单模型验证插件


Posted in jQuery onOctober 15, 2018

JQuery插件,轻量级表单模型验证,供大家参考,具体内容如下

附上源码和Demo段

var validataForm = (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.Validata = 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;

        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.validataForm || {});

调用处

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

Dictionary这个对象是抄一个博主的
代码附上,内置链接

/* https://www.cnblogs.com/baiyangyuanzi/p/6689554.html */
/*字典 Dictionary类*/
function Dictionary() {
  this.add = add;
  this.datastore = new Array();
  this.find = find;
  this.remove = remove;
  this.count = count;
  this.clear = clear;
}

function add(key, value) {
  this.datastore[key] = value;
}

function find(key) {
  return this.datastore[key];
}

function remove(key) {
  delete this.datastore[key];
}

function count() {
  /*var ss = Object.keys(this.datastore).length;
  console.log("ssss  "+ss);
  return Object.keys(this.datastore).length;*/
  /**/
  var n = 0;
  for (var key in Object.keys(this.datastore)) {
    ++n;
  }
  return n;
}

function clear() {
  for (var key in this.datastore) {
    delete this.datastore[key];
  }
}

萌新初试前端,有写得不好的地方,望各位前辈,多多指教。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
jQuery实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
jQuery基于cookie实现换肤功能实例
Oct 14 jQuery
jquery写出PC端轮播图实例
Jan 26 jQuery
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
Apr 17 jQuery
手写简单的jQuery雪花飘落效果实例
Apr 22 jQuery
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 jQuery
jQuery实现的网站banner图片无缝轮播效果完整实例
Jan 28 jQuery
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
jQuery带控制按钮轮播图插件
Jul 31 jQuery
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 #jQuery
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
Oct 10 #jQuery
jquery.param()实现数组或对象的序列化方法
Oct 08 #jQuery
jQuery实现点击图标div循环放大缩小功能
Sep 30 #jQuery
学习jQuery中的noConflict()用法
Sep 28 #jQuery
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 #jQuery
jQuery pjax 应用简单示例
Sep 20 #jQuery
You might like
消息持续发送的完整例子
2006/10/09 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
php实现监听事件
2013/11/06 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
PHP错误处理函数
2016/04/03 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
使用Python脚本操作MongoDB的教程
2015/04/16 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
公司面试感谢信
2014/02/01 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
学习十八大标语
2014/10/09 职场文书
先进人物事迹材料
2014/12/29 职场文书
工程质检员岗位职责
2015/04/08 职场文书
2015学校年度工作总结
2015/05/11 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫