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平滑滚动到顶部插件使用详解
May 08 jQuery
jQuery实现 RadioButton做必选校验功能
Jun 15 jQuery
jQuery选择器之子元素选择器详解
Sep 18 jQuery
jQuery实现table中两列CheckBox只能选中一个的示例
Sep 22 jQuery
jQuery获取随机颜色的实例代码
May 21 jQuery
jQuery使用each遍历循环的方法
Sep 19 jQuery
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
jQuery zTree插件使用简单教程
Aug 16 jQuery
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
jQuery实现鼠标拖拽登录框移动效果
Sep 13 jQuery
jQuery实现计算器功能
Oct 19 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
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
JS 网站性能优化笔记
2011/05/24 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP中文编码小技巧
2014/12/25 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
Python及Django框架生成二维码的方法分析
2018/01/31 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
详解python中__name__的意义以及作用
2019/08/07 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
大学生职业规划论文
2014/01/11 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
SQL Server表分区删除详情
2021/10/16 SQL Server
部分武汉产收音机展览
2022/04/07 无线电
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js
Python何绘制带有背景色块的折线图
2022/04/23 Python