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鼠标悬停内容动画切换效果
Apr 27 jQuery
jQuery tip提示插件(实例分享)
Apr 28 jQuery
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
jquery在vue脚手架中的使用方式示例
Aug 29 jQuery
浅谈ajax在jquery中的请求和servlet中的响应
Jan 22 jQuery
详解jQuery中的isPlainObject()使用方法
Feb 27 jQuery
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
jquery树形插件zTree高级使用详解
Aug 16 jQuery
jquery实现直播视频弹幕效果
Feb 25 jQuery
jquery自定义组件实例详解
Dec 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
PHP 压缩文件夹的类代码
2009/11/05 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
JS面向对象编程详解
2016/03/06 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
实践Vim配置python开发环境
2018/07/02 Python
java判断三位数的实例讲解
2019/06/10 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
Python3 合并二叉树的实现
2019/09/30 Python
商务日语专业毕业生求职信
2013/10/26 职场文书
电脑租赁公司创业计划书
2014/01/08 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
消防演习通知
2015/04/25 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js