DDR爱好者之家 Design By 杰米

本文实例为大家分享了jquery表单验证插件,供大家参考,具体内容如下

//正则表达式
var map = new Map();
map.put("*", /[\w\W]+/);
map.put("*6-16", /^[\w\W]{6,16}$/);
map.put("n", /^\d+$/);
map.put("n6-16", /^\d{6,16}$/);
map.put("s", /^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]+$/);
map.put("s6-16", /^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]{6,16}$/);
map.put("p", /^[0-9]{6}$/);//邮编
map.put("m", /^13[0-9]{9}$|14[0-9]{9}|15[0-9]{9}$|18[0-9]{9}$/);//手机号码
map.put("e", /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/);//email
map.put("url", /^(http|https):\/\/(\w+:\/\/)"image", /^(http|https):\/\/.*(.JPEG|.jpeg|.JPG|.jpg|.GIF|.gif|.BMP|.bmp|.PNG|.png)$/);//图片
map.put("integer", /^[1-9]\d*$/);//大于0的正整数
map.put("hj", /(\S*"-");
  var nums =new Array();
  nums[0] = datatype.substring(1,index);
  nums[1] = datatype.substring(index+1,datatype.length);
  //替换数字
  var reg;
  switch (datatype.substring(0,1)) {
  ///^[\w\W]{6,16}$/
  case "*": reg = new RegExp("^[\\w\\W]{"+nums[0]+","+nums[1]+"}$"); break;
  case "n": reg = new RegExp("^\\d{"+nums[0]+","+nums[1]+"}$"); break;
  case "s": reg = new RegExp("^[\\u4E00-\\u9FA5\\uf900-\\ufa2d\\w\\.\\s\\\\/]{"+nums[0]+","+nums[1]+"}$"); break;
  }
  return reg;
  }else{
  return map.get(datatype);
  }
 }
 }
})(jQuery,window);

 HaHaUtil = {
  checkFrom : function(formId){
  var form = $("#"+formId)[0];
  //遍历表单下面的元素
  for(var i=0;i<form.length;i++){
   if(!HaHaUtil.resultCheck(form[i])){
   return false;
   }
  }
  return true;
  },
  resultCheck : function(obj){
  var tagName = obj.tagName;
  switch(tagName)
  {
  case "INPUT": 
  case "TEXTAREA": 
   $item = $(obj);
   var dataType = $item.attr("dataType");
   //没有验证标签 就不校验了
   if(dataType == null){
   return true;
   }else{
   //获取 dataType 可以有多个验证用|分割开
   var reType = dataType.split("|");
   //把表单值前后的空格去掉
   var f_value = $item.val();
   if(f_value.indexOf(" ")!=-1){
    //说明有空格 也有可能中间有空格 中间有空格就不会去掉
    $item.val($.trim(f_value));
   }
   var tipId = $item.attr("tipId");
   $("#"+tipId).html("");

   for(var i=0;i<reType.length;i++){
    //如果第一个正则是 empty 说明是可以没值
    //如果有值 在根据正则校验
    if(reType[i] == "empty"){
    if($item.val() == ""){
     //就不校验了 
     return true;
     break;
    }else{
     //继续校验
     continue;
    }

    }
    if($("."+tipId).is(":hidden")){
    //如果是隐藏的菜单不校验
    continue;
    }
    //获取返回的正则表达式
    var reg = Validform.matchReg(reType[i]);
    if(!reg.test($item.val())){
    //判断不通过
     $("#"+tipId).html($item.attr("errormsg"));
     return false;
    break;
    }else{
     //判断通过 继续校验
     continue;
    }
   }
   return true;
   }
   break;
   //没有匹配到标签就返回false
   default : return true;
  }

  }



}


Array.prototype.remove = function(s) {
 for (var i = 0; i < this.length; i++) {
  if (s == this[i])
  this.splice(i, 1);
 }
}

function Map() {
 /** 存放键的数组(遍历用到) */
 this.keys = new Array();
 /** 存放数据 */
 this.data = new Object();

 /**
  * 放入一个键值对
  * @param {String} key
  * @param {Object} value
  */
 this.put = function(key, value) {
  if(this.data[key] == null){
  this.keys.push(key);
  }
  this.data[key] = value;
 };

 /**
  * 获取某键对应的值
  * @param {String} key
  * @return {Object} value
  */
 this.get = function(key) {
  return this.data[key];
 };

 /**
  * 删除一个键值对
  * @param {String} key
  */
 this.remove = function(key) {
  this.keys.remove(key);
  this.data[key] = null;
 };

 /**
  * 遍历Map,执行处理函数
  * 
  * @param {Function} 回调函数 function(key,value,index){..}
  */
 this.each = function(fn){
  if(typeof fn != 'function'){
  return;
  }
  var len = this.keys.length;
  for(var i=0;i<len;i++){
  var k = this.keys[i];
  fn(k,this.data[k],i);
  }
 };

 /**
  * 获取键值数组(类似Java的entrySet())
  * @return 键值对象{key,value}的数组
  */
 this.entrys = function() {
  var len = this.keys.length;
  var entrys = new Array(len);
  for (var i = 0; i < len; i++) {
  entrys[i] = {
   key : this.keys[i],
   value : this.data[i]
  };
  }
  return entrys;
 };

 /**
  * 判断Map是否为空
  */
 this.isEmpty = function() {
  return this.keys.length == 0;
 };

 /**
  * 获取键值对数量
  */
 this.size = function(){
  return this.keys.length;
 };

 /**
  * 重写toString 
  */
 this.toString = function(){
  var s = "{";
  for(var i=0;i<this.keys.length;i++,s+=','){
  var k = this.keys[i];
  s += k+"="+this.data[k];
  }
  s+="}";
  return s;
 };
} 

这个是一个js插件保存.js引用就可以了,特点灵活可以自定义校验内容原理使用正则表达式,对于隐藏的表单不校验

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<%@ include file="/common/taglibs.jsp"%>
<%@page contentType="text/html;charset=UTF-8"%>
<%@page pageEncoding="UTF-8"%>

<html>
<head>
<title>新建商品</title>
<script type="text/javascript"
 src="/UploadFiles/2021-04-02/common_functions.js">

这个是html的用法不用考虑其他的就是html代码

 function validateForm1(){ 
 var flag=HaHaUtil.checkFrom('detailDataForm');
 return flag;
 }

这个是from表单之前的数据校验的函数。

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

DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米

P70系列延期,华为新旗舰将在下月发布

3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。

而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?

根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。