jquery 验证提交

jquery.checkform.js 
Js代码    收藏代码
  1. jQuery.extend({  
  2.     //去除左边的空格  
  3.     ltrim: function(_str){  
  4.         return _str.replace(/(^\s*)/g, "");  
  5.     },  
  6.     //去除右边的空格  
  7.     rtrim: function(_str){  
  8.         return _str.replace(/(\s*$)/g, "");  
  9.     },  
  10.     //因为jquery本身已经有了trim方法,故这里不再重新定义  
  11.     //计算字符串长度,一个双字节字符长度计2,ASCII字符计1  
  12.     lengthw: function(_str){  
  13.         return _str.replace(/[^\x00-\xff]/g, "rr").length;  
  14.     },  
  15.     //转换为大写  
  16.     toUpper: function(_str){  
  17.         return _str.toUpperCase();  
  18.     },  
  19.     //转换为小写  
  20.     toLower: function(_str){  
  21.         return _str.toLowerCase();  
  22.     },  
  23.     //15位身份证转换为18位,如果参数字符串中有非数字字符,则返回"#"表示参数不正确  
  24.     idCardUpdate: function(_str){  
  25.         var idCard18;  
  26.         var regIDCard15 = /^(\d){15}$/;  
  27.         if (regIDCard15.test(_str)) {  
  28.             var nTemp = 0;  
  29.             var ArrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
  30.             var ArrCh = new Array('1''0''X''9''8''7''6''5''4''3''2');  
  31.             _str = _str.substr(0, 6) + '1' + '9' + _str.substr(6, _str.length - 6);  
  32.             for (var i = 0; i < _str.length; i++) {  
  33.                 nTemp += parseInt(_str.substr(i, 1)) * ArrInt[i];  
  34.             }  
  35.             _str += ArrCh[nTemp % 11];  
  36.             idCard18 = _str;  
  37.         }  
  38.         else {  
  39.             idCard18 = "#";  
  40.         }  
  41.         return idCard18;  
  42.     },  
  43.     //是否为空字符串  
  44.     isEmpty: function(_str){  
  45.         var tmp_str = jQuery.trim(_str);  
  46.         return tmp_str.length > 0;  
  47.     },  
  48.     isChinese: function(_str){  
  49.         return /^[\u4E00-\u9FA5]{0,25}$/.test(_str);  
  50.     },  
  51.     isEnglish: function(_str){  
  52.         return /^[A-Za-z]{0,25}$/.test(_str);  
  53.     },  
  54.     isNumber: function(_str){  
  55.         return /^[\d|\.|,]+$/.test(_str);  
  56.     },  
  57.     isDate:function(_str){  
  58.         return /^\d{2}\/\d{2}\/\d{4}$/.test(_str);  
  59.     },  
  60.     isTime: function(_str){  
  61.         return /^\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}:\d{2}$/.test(_str);  
  62.     },  
  63.     //是否为合法电子邮件地址  
  64.     isEmail: function(_str){  
  65.         return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(_str);  
  66.     },  
  67.     //是否合法url地址  
  68.     isURL: function(_str){  
  69.         var regTextUrl = /^(file|http|https|ftp|mms|telnet|news|wais|mailto):\/\/(.+)$/;  
  70.         return regTextUrl.test(_str);  
  71.     },  
  72.     //是否为合法ip地址  
  73.     isIpAddress: function(_str){  
  74.         if (_str.length == 0)   
  75.             return (false);  
  76.         reVal = /^(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])$/;  
  77.         return (reVal.test(_str));  
  78.     },  
  79.     //是否邮政编码(中国)  
  80.     isPostalCode: function(_str){  
  81.         var regTextPost = /^(\d){6}$/;  
  82.         return regTextPost.test(_str);  
  83.     },  
  84.     //是否是QQ号码  
  85.     isQQ:function(_str){  
  86.         var regTextQQ=/^\d{5,10}$/;   
  87.         return regTextQQ.test(_str);  
  88.     },  
  89.     //是否是有效中国身份证  
  90.     isIDCard: function(_str){  
  91.         var iSum = 0;  
  92.         var info = "";  
  93.         var sId;  
  94.         var aCity = {  
  95.             11: "北京",  
  96.             12: "天津",  
  97.             13: "河北",  
  98.             14: "山西",  
  99.             15: "内蒙古",  
  100.             21: "辽宁",  
  101.             22: "吉林",  
  102.             23: "黑龙江",  
  103.             31: "上海",  
  104.             32: "江苏",  
  105.             33: "浙江",  
  106.             34: "安徽",  
  107.             35: "福建",  
  108.             36: "江西",  
  109.             37: "山东",  
  110.             41: "河南",  
  111.             42: "湖北",  
  112.             43: "湖南",  
  113.             44: "广东",  
  114.             45: "广西",  
  115.             46: "海南",  
  116.             50: "重庆",  
  117.             51: "四川",  
  118.             52: "贵州",  
  119.             53: "云南",  
  120.             54: "西藏",  
  121.             61: "陕西",  
  122.             62: "甘肃",  
  123.             63: "青海",  
  124.             64: "宁夏",  
  125.             65: "新疆",  
  126.             71: "台湾",  
  127.             81: "香港",  
  128.             82: "澳门",  
  129.             91: "国外"  
  130.         };  
  131.         //如果输入的为15位数字,则先转换为18位身份证号  
  132.         if (_str.length == 15)   
  133.             sId = jQuery.idCardUpdate(_str);  
  134.         else   
  135.             sId = _str;  
  136.           
  137.         if (!/^\d{17}(\d|x)$/i.test(sId)) {  
  138.             return false;  
  139.         }  
  140.         sId = sId.replace(/x$/i, "a");  
  141.         //非法地区  
  142.         if (aCity[parseInt(sId.substr(0, 2))] == null) {  
  143.             return false;  
  144.         }  
  145.         var sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2));  
  146.         var d = new Date(sBirthday.replace(/-/g, "/"))  
  147.         //非法生日  
  148.         if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) {  
  149.             return false;  
  150.         }  
  151.         for (var i = 17; i >= 0; i--) {  
  152.             iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);  
  153.         }  
  154.         if (iSum % 11 != 1) {  
  155.             return false;  
  156.         }  
  157.         return true;  
  158.     },  
  159.     //是否有效的电话号码(中国)  
  160.     isPhoneCall: function(_str){  
  161.         return /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^[0-9]{3,4}[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/.test(_str);  
  162.     },  
  163.     //是否有效的手机号码(最新的手机号码段可以是15开头的  
  164.     isMobile: function(_str){  
  165.         return /^0{0,1}1(3|5)[0-9]{9}$/.test(_str);  
  166.     },  
  167.     //是否有效用户名,长度在6-50之间的,只包含字母,数字和下划线  
  168.     isValidUserName: function(_str){  
  169.         return /^\w{6,50}$/.test(_str);  
  170.     },  
  171.     //是否有效密码,长度在6-20之间  
  172.     isValidPass: function(_str){  
  173.         return /^\w{6,20}$/.test(_str);  
  174.     }  
  175. });  
  176. /** 
  177.  * 表单验证插件 
  178.  */  
  179. $.fn.checkform=function(opt){  
  180.     var cfg={  
  181.         text:{  
  182.             'isNull':'',  
  183.             'isEmpty':'',  
  184.             'isChinese':'',  
  185.             'isURL':'',  
  186.             'isEmail':'',  
  187.             'isIpAddress':'',  
  188.             'isPostalCode':'',  
  189.             'isIDCard':'',  
  190.             'isQQ':'',  
  191.             'isPhoneCall':'',  
  192.             'isMobile':'',  
  193.             'isValidUserName':'',  
  194.             'isValidPass':'',  
  195.             'isEnglish':'',  
  196.             'isDate':'',  
  197.             'isTime':'',  
  198.             'isNumber':''  
  199.         },  
  200.         radioorcheckbox:{  
  201.             'checkonly':''  
  202.         },  
  203.         advance:{  
  204.             'compare':'',  
  205.             'regexp':'',  
  206.             'function':''  
  207.         },  
  208.         errorClass:'error',  
  209.         msgClass:'noticeMsg',  
  210.         noticeClass:'noticeInput'  
  211.     };  
  212.     $.extend(cfg,opt);  
  213.     var form=$(this);  
  214.     var checkFlag=true;  
  215.     function checking(){  
  216.         form.find('input[type=text],textarea,select').each(function(){  
  217.             var _self=$(this);  
  218.             //做基础校验  
  219.             for(var i in cfg.text){  
  220.                 var check=_self.attr(i);  
  221.                 if(typeof(check)!='undefined'){  
  222.                     try{  
  223.                         if(check=='true'){  
  224.                             checkFlag=$[i](_self.val());  
  225.                         }  
  226.                         else{  
  227.                             checkFlag=eval('('+check+'("'+_self.val()+'"))');  
  228.                         }  
  229.                         if(!checkFlag){  
  230.                             _self.addClass(cfg.errorClass);  
  231.                             _self.unbind('click',function(){  
  232.                                 form.find('.'+cfg.msgClass).remove();  
  233.                                 $(this).removeClass(cfg.errorClass);  
  234.                             }).bind('click',function(){  
  235.                                 form.find('.'+cfg.msgClass).remove();  
  236.                                 $(this).removeClass(cfg.errorClass);  
  237.                             });  
  238.                             //显示提示语言在输入信息的旁边  
  239.                             form.find('.'+cfg.msgClass).remove();  
  240.                             $('<span class="'+cfg.msgClass+'">'+_self.attr('msg')+'</span>').insertAfter(_self);  
  241.                             return false;  
  242.                         }  
  243.                     }catch(error){}  
  244.                 }  
  245.                 else{  
  246.                     continue;  
  247.                 }  
  248.             }  
  249.             //高级验证  
  250.             for(var i in cfg.advance){  
  251.                 var check=_self.attr(i);  
  252.                 if(check){  
  253.                     switch(i){  
  254.                         //> < >= <= 四种格式  
  255.                         //样例 compare=">=:test"  
  256.                         case 'compare':  
  257.                         var arr_check=check.split(':');  
  258.                         var targ=form.find('input[name='+$.trim(arr_check[1])+']').val();  
  259.                         checkFlag=eval('('+_self.val()+arr_check[0]+targ+')');  
  260.                         break;  
  261.                         //自定义正则  
  262.                         case 'regexp':  
  263.                         var re=new RegExp(check);  
  264.                         checkFlag=re.test(_self.val());  
  265.                         break;  
  266.                         //自定义函数,要判断是定义匿名函数,还是执行函数  
  267.                         case 'function':  
  268.                         checkFlag=eval('('+check+'("'+_self.val()+'"))');  
  269.                         break;  
  270.                     }  
  271.                     if(!checkFlag){  
  272.                         _self.addClass(cfg.errorClass);  
  273.                         _self.unbind('click',function(){  
  274.                             form.find('.'+cfg.msgClass).remove();  
  275.                             $(this).removeClass(cfg.errorClass);  
  276.                         }).bind('click',function(){  
  277.                             form.find('.'+cfg.msgClass).remove();  
  278.                             $(this).removeClass(cfg.errorClass);  
  279.                         });  
  280.                         //显示提示语言在输入信息的旁边  
  281.                         form.find('.'+cfg.msgClass).remove();  
  282.                         $('<span class="'+cfg.msgClass+'">'+_self.attr('msg')+'</span>').insertAfter(_self);  
  283.                         _self.focus();  
  284.                         return false;  
  285.                     }  
  286.                 }  
  287.                 else{  
  288.                     continue;  
  289.                 }  
  290.             }  
  291.         });  
  292.         form.find('input[type=radio],input[type=checkbox]').each(function(){  
  293.             var _self=$(this);  
  294.             //做基础校验  
  295.             for(var i in cfg.radioorcheckbox){  
  296.                 var check=_self.attr(i);  
  297.                 if(typeof(check)!='undefined'){  
  298.                     try{  
  299.                         if(check=='true'){  
  300.                             //获得改组radio或者是checkbox  
  301.                             var name=_self.attr('name');  
  302.                             if(!form.find('input[name='+name+']:checked')){  
  303.                                 _self.addClass(cfg.errorClass);  
  304.                                 _self.unbind('click',function(){  
  305.                                     form.find('.'+cfg.msgClass).remove();  
  306.                                     $(this).removeClass(cfg.errorClass);  
  307.                                 }).bind('click',function(){  
  308.                                     form.find('.'+cfg.msgClass).remove();  
  309.                                     $(this).removeClass(cfg.errorClass);  
  310.                                 });  
  311.                                 //显示提示语言在输入信息的旁边  
  312.                                 form.find('.'+cfg.msgClass).remove();  
  313.                                 $('<span class="'+cfg.msgClass+'">'+_self.attr('msg')+'</span>').insertAfter(_self);  
  314.                                 _self.focus();  
  315.                                 return false;  
  316.                             }  
  317.                         }  
  318.                     }catch(error){  
  319.                     }  
  320.                     //return true;  
  321.                 }  
  322.                 else{  
  323.                     continue;  
  324.                 }  
  325.             }  
  326.         });  
  327.         return checkFlag;  
  328.     }  
  329.     function initInput(){  
  330.         form.find('input[type=text],input[type=checkbox],input[type=radio],textarea,select').each(function(){  
  331.             var _self=$(this);  
  332.             _self.change(function(){  
  333.                 checking();  
  334.             });  
  335.             var notice=_self.attr('notice');  
  336.             if(typeof(notice)!='undefined'){  
  337.                 //显示提示语言在输入信息的旁边  
  338.                 _self.focus(function(){  
  339.                     form.find('.'+cfg.noticeClass).remove();  
  340.                     $('<span class="'+cfg.noticeClass+'">'+notice+'</span>').insertAfter(_self);  
  341.                 }).blur(function(){  
  342.                     form.find('.'+cfg.noticeClass).remove();  
  343.                 });  
  344.             }  
  345.         });  
  346.     }  
  347.     initInput();  
  348.     form.submit(function(){  
  349.         return checking();  
  350.     });  
  351. }  

页面dome.jsp 
Html代码    收藏代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html>  
  3.     <head>  
  4.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5.         <title>dome</title>  
  6.         <script>  
  7.   
  8. function  checkUpd()  
  9. {  
  10. document.form1.submit();  
  11. return true;  
  12. }  
  13. </script>  
  14.         <link href="img/mask.css" rel="stylesheet" type="text/css" />  
  15.         <script src="Js/jquery.js"></script>  
  16.         <script src="Js/jquery.checkform.js"></script>  
  17.           
  18.         <style>  
  19.             body{ font-size:12px;height:100%;margin:0; padding:0; color:#1248AC;}  
  20.             .error{  
  21.              border:1px solid red;  
  22.             }  
  23.             .noticeMsg{  
  24.              color:red  
  25.             }  
  26.             .noticeInput{  
  27.              color:green  
  28.             }  
  29.             </style>  
  30.     </head>  
  31.     <body>  
  32.      <form action="?a=1" method="post">  
  33.         <input type="text" isEmpty="true" msg="不能为空" notice="不能为空"><br />  
  34.        
  35.         <input type="text" isPostalCode="true" msg="邮政编码"><br />  
  36.    
  37.         <input type="text" isMobile="true" msg="手机号码"><br />  
  38.   
  39.         <input type="submit" value="submit"> <p><a class="btn" href="javascript:checkMyForm()"><span>修改资料</span></a> </p>  
  40.     </form>  
  41.     </body>  
  42. </html>  
  43. <script>  
  44. $(function(){  
  45.     $('form').checkform();  
  46. });  
  47. function checkMyForm(){  
  48.     alert($('form').checkform());  
  49.     if($('form').checkform()){  
  50.         alert("OK");  
  51.         //frmPersonalUpd.submit();  
  52.     }else{  
  53.         alert("您填写的信息有误!");  
  54.     }  
  55. }  
  56. </script>  

你可能感兴趣的:(jquery,验证提交)