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解析获取JSON数据
Apr 08 jQuery
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
May 08 jQuery
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
jQuery实现的手动拖动控制进度条效果示例【测试可用】
Apr 18 jQuery
jQuery.parseJSON()函数详解
Feb 28 jQuery
jquery登录的异步验证操作示例
May 09 jQuery
jQuery事件委托代码实践详解
Jun 21 jQuery
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
Jquery Datatables的使用详解
Jan 30 jQuery
jQuery实现小火箭返回顶部特效
Feb 03 jQuery
JQuery省市联动效果实现过程详解
May 08 jQuery
jQuery冲突问题解决方法
Jan 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中的时间显示
2007/01/18 PHP
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
Python中作用域的深入讲解
2018/12/10 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
如何解决安装python3.6.1失败
2020/07/01 Python
浅谈Python3中print函数的换行
2020/08/05 Python
Django多数据库联用实现方法解析
2020/11/12 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
2014年网管工作总结
2014/12/11 职场文书
论文评审意见
2015/06/05 职场文书
工作服管理制度范本
2015/08/06 职场文书