jquery自定义表单验证插件

前端之家收集整理的这篇文章主要介绍了jquery自定义表单验证插件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

]*>.*?<\/\1>|<.*?/);//过滤html标签和javascript标签

(function($,win){
Validform = {
matchReg : function(datatype){
//匹配返回正则表达式 有3个比较特殊 所有特殊处理一下
//这3个是因为有长度判断 要动态修改正则表达式
var reg1 = /^*\d{1,}-\d{1,}$/;
var reg2 = /^n\d{1,}$/;
var reg3 = /^s\d{1,}$/;
if(reg1.test(datatype) || reg2.test(datatype) || reg3.test(datatype)){
//把开始长度和结束长度截取出来
var index = datatype.indexOf("-");
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")){
//如果是隐藏的<a href="/tag/caidan/" target="_blank" class="keywords">菜单</a>不校验
continue;
}
//<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>返回的正则表达式
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引用就可以了,特点灵活可以自定义校验内容原理使用正则表达式,对于隐藏的表单不校验

<%@page contentType="text/html;charset=UTF-8"%> <%@page pageEncoding="UTF-8"%> 新建商品

<script type="text/javascript">
j = 1;
$(function(){
updateDiscountPercentage();
$("#btnadd2").click(function(){
//var newNode='<div id="fileSelectDiv
'+j+'" class="form-inline"><div class="form-group">';
//newNode +='

';
//newNode +='<div class="form-group"><input type="button" value="删除" onclick="delDivRow(\'fileSelectDiv'+j+'\')"/>
<div class="form-group">';
//newNode +='<span id="detailImgFiles
'+j+'span" class="sr-text highlight">';
//newNode +='
';
//$("#newUploadTd").append(newNode);
var newNode2='<div class="form-inline" id="newImgDiv
'+j+'"><div class="form-group">';
newNode2+='<textarea dataType="empty|image|*1-500" tipId="detail_span" errormsg="请输入合法的图片链接,并小于500个字符" id="newDetailImgs" name="newDetailImgs" rows="1" cols="100">';
newNode2+='
<div class="form-group">';
newNode2+='<input type="button" id="btn_delOld2" value="删除" onclick="delDivRow(\'newImgDiv_'+j+'\')">
';
$("#showResultTd").append(newNode2);
j = j + 1;
});

$("input[name='needRobert']").click(function(){
var need=$('input:radio[name="needRobert"]:checked').val();
$("tr[name='Show']").toggle();
/ if(need==1){
$("tr[name='Show']").css('display','block');
}else{
$("tr[name='Show']").css('display','none');
}
/
});
});

<form:form commandName="currentCommodity" name="detailDataForm"
id="detailDataForm" method="post" enctype="multipart/form-data">

<div id="errorMessage"
style="color: #ff2233; font-size: 14px; text-align: center;">
<c:if test="${not empty errorMessage }">

新建商品
--%>

<div class="h10px">


<table border="0" width="100%">

<tr>
<td width="20%">
<div class="form-inline">
<div class="form-group">
<label for="commodityTitle" class="sr-outer">商品标题:

<tr>
<td width="20%">
<div class="form-inline">
<div class="form-group">
<label for="keyword" class="sr-outer">关键字:

<tr>
<td width="20%">
<div class="form-inline">
<div class="form-group">
<label for="commodityType" class="sr-outer">商品分类:

虚拟商品 实体商品
</div>
<div class="form-group"&gt;
 <span id="commodityType_span" class="sr-text highlight"&gt;*</span>
</div>
</div>

</td>
</tr>

<tr>
<td width="20%">
<div class="form-inline">
<div class="form-group">
<label for="currencyType" class="sr-outer">货币单位:

福饼
</div>
<div class="form-group"&gt;
 <span id="commodityType_span" class="sr-text highlight"&gt;*</span>
</div>
</div>

</td>
</tr>

<tr>
<td width="20%">
<div class="form-inline">
<div class="form-group">
<label for="pictureLink" class="sr-outer">图片链接:<span
id="preview_myCustImage_span">

<tr>
<td width="20%">
<div class="form-inline">
<div class="form-group">
<label for="totalQuantity" class="sr-outer">总人次:

</td>
</tr>

<tr>
<td width="20%">
<div class="form-inline">
<div class="form-group">
<label for="unitPrice" class="sr-outer">最低购买注数:

一元 十元
-->
删除" onclick="delDivRow('oldImgDiv_${tmpEntity.index}')">
图片链接,并小于500个字符" name="newDetailImgs" rows="1" cols="100">
<tr>
<td></td>
<td><span id="detail_span" class="sr-text highlight">
</td>
</tr>

<tr>
<td width="20%">
<div class="form-inline">
<div class="form-group">
<label for="tags" class="sr-outer">标签:

Box" id="selectedTags" name="selectedTags" value="${tmpEntity.tagId}">${tmpEntity.tagName}

</td>
</tr>
<tr>
<td width="20%">
<div class="form-inline">
<div class="form-group">
<label for="tags" class="sr-outer">是否需要机器人:

<tr style="display: none;" name="Show">
<td width="20%">
<div class="form-inline">
<div class="form-group">
<label for="tags" class="sr-outer">计划售完时间:

</td>
<td width="80%">
<div class="form-inline">
<form:input type="number" path="planSoldTime" dataType="integer" tipId="planSoldTime"
errormsg="必须为正整数" class="planSoldTime
" min="0" max="9999" />
<div class="form-group">
<span id="planSoldTime_" class="sr-text highlight">*

次数:

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

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

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

猜你在找的jQuery相关文章