第二十三节(表单验证)
<title>form表单验证 </title> <style> /*验证css开始*/ /* common css ============================================== */ body{margin:0 auto;text-align:center;font:12px/1.5 arial;color:#242424;background:#212222;} div{text-align:left;} :focus{outline:none;} h4,h3,h2,h1{font-size:14px;margin:0;} form,ul,ol,dl,dd,p{margin:0;padding:0;} li{list-style-type:none;} img{border:none;vertical-align:middle;} button,input,select,textarea{font-size:1em;margin:0;font-family:tahoma,arial,simsun,sans-serif;color:#484848;} a{color:#f27f02;text-decoration:none;} a:hover{text-decoration:underline;} sup{vertical-align:text-top;} sub{vertical-align:text-bottom;} del{color:#686868;} table{border-collapse:collapse;border-spacing:0;} /* for font & text & tag =================================== */ .red{color:red!important;} .gray{color:#686868!important;} .hasDefaultText{color:#999;} .orange{color:#f60!important;} .green{color:#79a605!important;} .blue{color:#0057b0!important;} b{font-weight:normal;display:inline-block;margin:0 8px;color:#f27f02;} /* for margin & padding | width & height =================== */ .mb10{margin-bottom:10px;} .mb18{margin-bottom:18px;} .mb22{margin-bottom:22px;} .mt10{margin-top:10px;} .mr20{margin-right:20px;} .p10{padding:10px;} .tl{text-align:left} .tr{text-align:right} .tc{text-align:center} .ml10{margin-left:10px;} .mr10{margin-right:10px;} /* class css ============================ class css ======== */ .fl{float:left;display:inline;} .fr{float:right;display:inline;} .clear{clear:both;height:0;overflow:hidden;} .lireset li{background:url("images/arrow1.gif") no-repeat left 8px;margin-bottom:4px;padding-left:15px;} .lireset2 li{background:url("images/arrow2.gif") no-repeat left 8px;margin-bottom:4px;padding-left:15px;} .download{padding:6px 0 6px 70px;line-height:26px;height:64px;font-size:16px;font-family:"microsoft yahei";background:url(images/download.png) no-repeat;white-space:nowrap;} .donate{padding:15px 5px 6px 72px;height:55px;width:213px;display:block;color:#8b6300;border:5px solid #F27F02;background:url(images/donate.png) 3px center no-repeat #fae4ae;} .donate:hover{text-decoration:none;background-color:#fff79f;} /*--find height for float elements --------------------------*/ .cls:after{content:"";font-size:0;display:block;height:0;clear:both;visibility:hidden;} * html .cls{zoom:1;} /* IE6 */ *:first-child+html .cls{zoom:1;} /* IE7 */ .wraper{width:980px;margin-left:auto;margin-right:auto;} .header{background:url(images/header-bg.gif) repeat-x left bottom;} .header h1{font-size:34px;line-height:52px;font-weight:normal;padding:6px 0 8px 0;} .header h1 a{color:#fff;} .header .wraper{height:72px;position:relative;} .header .nav{position:absolute;right:-1px;top:0;font-family:"microsoft yahei";} .header .nav li{float:left;} .header .nav li a{font-size:20px;color:#fff;height:67px;line-height:67px;text-decoration:none;padding-left:15px;padding-right:15px;text-align:center;float:left;margin-right:1px;background:url(images/navbg.gif) repeat-x;} .header .nav li a.current,.header .nav li a:hover{border-bottom:5px solid #f27f02;} .gallery{height:496px;overflow:hidden;background:url(images/gallerry-bg.gif) 0 0 repeat-x #ccc;border-bottom:5px solid #EAEAEA;} .gallery li{background-color:#fff;overflow:hidden;} .roundabout-holder{width:646px;height:496px;margin:0 auto;} .roundabout-moveable-item{width:646px;height:416px;cursor:pointer;border:3px solid #ccc;border:3px solid rgba(255,255,255,0.5);border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;} .roundabout-moveable-item img{width:100%;} .roundabout-in-focus{cursor:default;border:3px solid rgba(255,255,255,0.8);} .main{background-color:#fff;color:#424242;padding:20px 0 30px;line-height:22px;} .aside{width:300px;} .main h3,.main h2{color:#212222;font-size:26px;font-weight:normal;line-height:1.2em;margin-bottom:22px;font-family:"microsoft yahei";} .main h3 span,.main h2 span{color:#888;} .content{width:650px;} .main p{margin-bottom:18px;} .latestcomment li{max-height:36px;line-height:18px;overflow:hidden;margin-bottom:16px;color:#000;} .latestcomment a{color:#8a8a8a;text-decoration:underline;} .latestcomment a:hover{text-decoration:none;} .footer{color:#fff;height:20px;padding:20px 0 22px 0;border-top:5px solid #eee;} .commentlist cite,.commentlist em{font-style:normal;} .comment .tit{border-bottom:1px dashed #CCCCCC;font-weight:bold;margin-bottom:10px;padding-bottom:6px;} .comment .tit span.gray{font-weight:normal;} .comment .comment-meta a{color:#999;cursor:default;} .comment .comment-meta a:hover{text-decoration:none;} .commentlist p{color:#333333;line-height:23px;margin:8px 0;} .commentlist li{color:#666666;float:none;height:auto;margin:0;min-height:50px;padding:10px 10px 10px 72px;position:relative;width:898px;} .commentlist li.graybg{background-color:#eee;} .commentlist li img{border:1px solid #DDDDDD;height:32px;left:10px;padding:4px;position:absolute;top:13px;width:32px;} .commentlist li .said{margin:10px 0;} .sendcomment li{padding:5px 0;} .sendcomment .inputxt{border:1px solid #CCCCCC;padding:5px;width:230px;} .sendcomment textarea{border:1px solid #CCCCCC;height:160px;overflow:auto;padding:5px;width:566px;} .sendcomment .btn_sub{cursor:pointer;padding:8px 20px;} .pagenav{padding:10px 0;} .pagenav a{display:inline-block;border:1px solid #ddd;padding:0 4px 1px;} .pagenav b{color:red;} .pagenav *{margin-right:6px;} .wp_syntax{margin-bottom:22px!important;} .post p{margin-bottom:8px;} .questionlist dt{padding:5px 15px;color:#333;font-size:14px;background-color:#eee;} .questionlist dd{padding:6px 15px 15px;margin-bottom:10px;color:#666;} .questionlist p{margin:8px 0;} .Validform_checktip{margin-left:8px;line-height:20px;height:20px;overflow:hidden;color:#999;font-size:12px;} .Validform_right{color:#71b83d;padding-left:20px;background:url(images/right.png) no-repeat left center;} .Validform_wrong{color:red;padding-left:20px;white-space:nowrap;background:url(images/error.png) no-repeat left center;} .Validform_loading{padding-left:20px;background:url(images/onLoad.gif) no-repeat left center;} .Validform_error{background-color:#ffe7e7;} #Validform_msg{color:#7d8289;font:12px/1.5 tahoma,arial,\5b8b\4f53,sans-serif;width:280px;-webkit-box-shadow:2px 2px 3px #aaa;-moz-box-shadow:2px 2px 3px #aaa;background:#fff;position:absolute;top:0px;right:50px;z-index:99999;display:none;filter:progid:DXImageTransform.Microsoft.Shadow(Strength=3,Direction=135,Color='#999999');box-shadow:2px 2px 0 rgba(0,0,0,0.1);} #Validform_msg .iframe{position:absolute;left:0px;top:-1px;z-index:-1;} #Validform_msg .Validform_title{line-height:25px;height:25px;text-align:left;font-weight:bold;padding:0 8px;color:#fff;position:relative;background-color:#999;background:-moz-linear-gradient(top,#999,#666 100%);background:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#666));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999',endColorstr='#666666');} #Validform_msg a.Validform_close:link,#Validform_msg a.Validform_close:visited{line-height:22px;position:absolute;right:8px;top:0px;color:#fff;text-decoration:none;} #Validform_msg a.Validform_close:hover{color:#ccc;} #Validform_msg .Validform_info{padding:8px;border:1px solid #bbb;border-top:none;text-align:left;} /*验证css结束*/ /*页面样式*/ .registerform li{padding-bottom:20px;} .Validform_checktip{margin-left:10px;} .registerform .label{display:inline-block;width:70px;} .action{padding-left:92px;} .fz12{font-size:12px;} input{padding:8px 20px;vertical-align:middle;} .main{padding-bottom:60px;padding-top:36px;} .main h1,.main h2,.main h3{padding-left:10px;} .main h1{text-align:center;color:#212222;font-family:"microsoft yahei";font-size:36px;font-weight:normal;line-height:2em;margin-bottom:36px;} .main h2{background-color:#eee;line-height:2!important;} .main h3{font-size:20px;margin-bottom:10px;} .lireset2{padding-left:10px;} .registerform{margin-bottom:40px;} .registerform .need{width:10px;color:#b20202;} .registerform td{padding:5px 0;vertical-align:top;text-align:left;} .registerform .inputxt,.registerform textarea{border:1px solid #a5aeb6;width:196px;padding:4px 2px;} .registerform textarea{height:75px;} .registerform label{margin:0 15px 0 4px;} .registerform .tip{line-height:20px;color:#5f6a72;} .registerform select{width:202px;} .registerformalter select{width:124px;} .swfupload{vertical-align:top;} .passwordStrength{} .passwordStrength b{font-weight:normal;} .passwordStrength b,.passwordStrength span{display:inline-block;vertical-align:middle;line-height:16px;line-height:18px\9;height:16px;} .passwordStrength span{width:45px;text-align:center;background-color:#d0d0d0;border-right:1px solid #fff;} .passwordStrength .last{border-right:none;} .passwordStrength .bgStrength{color:#fff;background-color:#71b83d;} #demo1 .passwordStrength{margin-left:8px;} .tipmsg{padding:0 10px;} textarea{overflow:auto;resize:none;} .document{min-height:800px;} .document .sidenav{width:170px;background-color:#eee;padding:10px 10px 20px;} .document .sidenav h3{font-size:14px;padding:5px 10px;background-color:#e1e1e1;} .document .sidenav a{color:#1870a9;} .document .content{width:750px;} .document .content dt{background-color:#eee;line-height:2;padding:0 10px;} .document .content dt a{color:#79a605;padding:5px 0;font-size:20px;font-weight:bold;display:block;} .document .content dt a:hover,.document .content h3 a:hover{text-decoration:none;cursor:default;} .document .content dd{padding:15px 0;} .document .content h3{color:#333;font-size:16px;} .document .content p{padding:0 0 16px 10px;margin-bottom:0;} .document .content .intro{margin-bottom:16px;} .document .content .intro p{padding-bottom:0;} .document .content .intro pre{padding-left:10px;} .document .content .wp_syntax{margin-left:10px;margin-right:10px;} .document .sidenav .lireset2{padding-left:0;} .document .sidenav li ul{display:none;} .toTop{display:block;width:48px;height:49px;overflow:hidden;text-indent:-20000px;position:fixed;right:15px;bottom:20px;display:none;background:url(images/totop.png) no-repeat;_position:absolute;_top:expression(documentElement.scrollTop+documentElement.clientHeight-this.offsetHeight-20);} .error{color:red;background:url("error.png") no-repeat;padding:0 0 0 18px;} .corrent{color:green;background:url("corrent.png") no-repeat;padding:0 0 0 18px;} /*页面样式结束*/ </style> </head> <body> <div class="main"> <div class="wraper"> <h2 class="green">表单验证</h2> <form id="registerform" class="registerform" action="ajax_post.php" > <ul> <ul> <li> <label class="label"> 中文名:</label> <input type="text" name="name" tvalidator="email" class="inputxt" trequired="true" title="请输入中文名" placeholder="请输入中文名" > </li> <li> <label class="label"> 密码:</label> <input type="text" tvalidator="telephone" name="password" class="inputxt" title="请输入密码" placeholder="请输入密码" trequired="true" > </li> <li> <label class="label"> 确认密码:</label> <input type="text" name="confirmPassword" class="inputxt" title="请输入确认密码" placeholder="请输入确认密码" trequired="true" > </li> <!--<li> <label class="label"><span class="need">*</span> 所在城市:</label> <select name="province" datatype="*" nullmsg="请选择所在城市!" class="Validform_error"><option value="">请选择城市</option><option value="1">瑞金市</option></select> <span class="Validform_checktip Validform_wrong">请选择所在城市!</span></li> <li> <label class="label"><span class="need">*</span> 性别:</label> <input type="radio" value="1" name="gender" id="male" class="pr1 Validform_error" datatype="*" nullmsg="请选择性别!"><label for="male">男</label> <input type="radio" value="2" name="gender" id="female" class="pr1"><label for="female">女</label> <span class="Validform_checktip Validform_wrong">请选择性别!</span></li> <li> <label class="label"><span class="need">*</span> 购物网:</label> <input name="shoppingsite2" class="rt2 Validform_error" id="shoppingsite21" type="checkbox" value="1" datatype="*" nullmsg="请选择购物网!"><label for="shoppingsite21">新蛋</label> <input name="shoppingsite2" class="rt2" id="shoppingsite22" type="checkbox" value="2"><label for="shoppingsite22">淘宝</label> <input name="shoppingsite2" class="rt2" id="shoppingsite23" type="checkbox" value="3"><label for="shoppingsite23">京东</label> <span class="Validform_checktip Validform_wrong">请选择购物网!</span></li>--> </ul> </ul> <div class="action"> <input type="button" class="tmui_submit" value="提 交" /> <input type="reset" value="重 置" /> </div> </form> </div> </div> <script type="text/javascript" src="jquery-1.11.1.min.js"></script> <script type="text/javascript" src="tmui_validator.js"></script> <script type="text/javascript"> $(function(){ $("#registerform").tmValidator({ ajax:true, callback:function(){ //保存课程 //保存笔记 alert("异步方法"); }}); }); </script> </body>
/////////////////////////////////////////////////////////////////////////////////////////////////// 里面另外写的插件tmui_validator.js为代码如下: (function($){ //插件入口 $.fn.tmValidator = function(options){ this.each(function(){ var opts = $.extend({},$.fn.tmValidator.defaults ,$.fn.tmValidator.methods,options,$.fn.tmValidator.jvalidator); opts.init($(this),opts); }); }; //方法定义 $.fn.tmValidator.methods = { init :function($form,opts){ var $this = this; $form.find(".tmui_submit").on("click",function(){ var flag =$this._validator($form,opts); if(flag){ //回调函数 if(opts.ajax){ opts.callback($form); }else{ $form.submit(); } }else{ return false; } }); //打* $form.find("[trequired]").each(function(){ $(this).before("<span class='need'>*</span>"); }); }, _validator : function($form,opts){//空判断 var $this = this; var flag = true; $form.find("[trequired],[tvalidator]").each(function(){ var value = $(this).val(); var reqiured = $(this).attr("trequired"); if(isEmpty(value) && eval(reqiured)){ $(this).css("border","2px solid red"); $(this).focus(); $this.showMessage($(this),$(this).attr("title"),"error"); flag = false; return false; }else{ $(this).css("border","1px solid #ccc"); $this.showMessage($(this),"corrent"); }; var jvalidator = $(this).attr("tvalidator"); //var flag = $.fn.tmValidator.jvalidator[jvalidator]($(this)); if(isNotEmpty(value) && isNotEmpty(jvalidator) && !opts[jvalidator]($(this))){//必须不为空才进行验证 $(this).focus(); flag = false; return false; }else{ return true; } }); return flag; }, showMessage : function($target,msg,flag){ var $span = $target.next(); if(isEmpty($span.html())){ $span = $("<span></span>"); } if(flag=="error"){ $span.removeClass("corrent").addClass("error").text(msg); }else{ $span.removeClass("error").addClass("corrent").text("正确"); } $target.after($span); } }; //属性参数 $.fn.tmValidator.jvalidator = { email : function($target){ return jxtvEmail($target); }, telephone : function($target){ return jxtvMobile($target); } }; //默认参数 $.fn.tmValidator.defaults = { ajax:true, callback:function($form){ } }; /** * 判断非空 * * @param val * @returns {Boolean} */ function isEmpty(val) { val = $.trim(val); if (val == null) return true; if (val == undefined || val == 'undefined') return true; if (val == "") return true; if (val.length == 0) return true; if (!/[^(^\s*)|(\s*$)]/.test(val)) return true; return false; } function isNotEmpty(val) { return !isEmpty(val); } /*****************验证器**********************/ /*固定电话号码*/ function jxtvTelephone($target) { return jxtvValidate($target, /^\d{3}-\d{8}|\d{4}-\d{7}$/, { msg :"电话号码不正确!" }); }; /*邮箱*/ function jxtvEmail($target) { return jxtvValidate($target, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, { msg :"邮箱格式不正确" }); }; /*手机*/ function jxtvMobile($target) { return jxtvValidate($target, /^(13|15|18)\d{9}$/, { msg :"手机号码不正确!" }); }; //控制所有的验证器的正则表达式判断 function jxtvValidate($target,regex,msg){ if(regex.test($target.val())){ $.fn.tmValidator.methods.showMessage($target,"","current"); return true; }else{ $.fn.tmValidator.methods.showMessage($target,msg.msg,"error"); return false; } } })(jQuery)