jQuery扩展+xml实现表单验证功能的方法
程序员文章站
2022-05-03 22:49:44
本文实例讲述了jquery扩展+xml实现表单验证功能的方法。分享给大家供大家参考,具体如下:
此处表单验证jquery 引用jquery.1.8.2.js,md5.js...
本文实例讲述了jquery扩展+xml实现表单验证功能的方法。分享给大家供大家参考,具体如下:
此处表单验证jquery 引用jquery.1.8.2.js,md5.js
扩展提示信息,扩展验证方法(如果有正则表达式的话可以用默认方法)
string.prototype.trim=function(){return this.replace(/(^\s*)|(\s*$)/g,"");};//ie下解决trim 方法问题 (function($) { $.elementval = new array(); /** ******************************************************************************************************************************************** * ========自定义提示语============================================================================================================== * ========regex、如果有正则表达式的话=============================================================================================== * ========successmsg、验证成功时==================================================================================================== * ========errormsg、验证失败时====================================================================================================== * promptmsg、提示语=================================================================================================================*********************** **/ $.vfdata = { errorhtml:'<img src="images/cuo_biao.png"> ', successhtml:'<img src="images/dui_biao.png" /> ', pormpthtml:'<img src="images/tishi_biao.png"> ', _null : { //successmsg : "", errormsg : "不能为空!", promptmsg : "不能为中文" }, _firstpwd:{ regex:/^[a-z0-9_-]{6,18}$/, //successmsg : "", errormsg : "密码格式不正确!", promptmsg : "6-16位字符(字母或数字),区分大小写" }, _code:{ regex:/^[a-z0-9_-]{6,18}$/, //successmsg : "", errormsg : "机构代码不正确!", promptmsg : "机构代码为自填项!" }, _secondpwd:{ //successmsg : "", errormsg : "两次密码不一致!,请确保初次密码格式正确", promptmsg : "请再次输入密码" }, _email : { regex:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, //successmsg : "", errormsg : "邮箱地址格式不正确!", promptmsg : "邮箱格式为www@xxx.com" }, _companyname : { //successmsg : "", errormsg : "没有你输入的机构!", promptmsg : "请在所在的机构中选择" }, _phone:{ regex :/^1[3|4|5|8][0-9]\d{4,8}$/, successmsg : "", errormsg : "你输入的手机号格式不正确!", promptmsg : "输入你的的手机号码!" }, _tel:{ //regex :/^[0][1-9]{2,3}[-][1-9]{1}[0-9]{8}$/, regex :/^[0-9]{3,4}[-]?[0-9]{9}$/, successmsg : "", errormsg : "你输入的电话格式不正确!", promptmsg : "格式固定 例如 010-88888888!" }, _loginname:{ regex:/^[a-za-z]{1,1}[a-z0-9a-z]{5,16}$/, successmsg : "", errormsg : "你输入的用户名格式不正确!", promptmsg : "6-12位字符(字母、数字、汉字),首位必须为字母,区分大小写" }, _captcha:{ regex:/^[a-z0-9a-z]{4}$/, successmsg : "", errormsg : "你输入的验证码格式不正确!", promptmsg : "请输入验证码!" } }; /** * ============================================================================================================================ * =========自定义验证方法验证方法============================================================================================== * ============================================================================================================================ * */ $.firstpwd=""; $.verification = { // 提示信息 0:正常、1:错误 、2:提示 _def:{//如果没有自定义的验证的话直接调用就可以了$.verification._def(obj); vf:function(obj){ var num = 0; if ($.utilfun.regexcheck(obj)) { num = 0; } else { num = 1; } return $.utilfun.showprompt(num, obj); } }, _null : {//判断是否为空 vf:function(obj){ var num=0; if(obj.val.trim() == ""){ num=1; } return $.utilfun.showprompt(num, obj,$.vfdata["_null"]); } }, //===================================================需要特殊判断的================================================================= _companyname : {// 机构名称验证 vf : function(obj) { var num = 1; for(var key in $.indexdata){ if(obj.val.trim()==key){ num=0; break; } } return $.utilfun.showprompt(num, obj); } }, _firstpwd:{ vf : function(obj) { var num = 0; if ($.utilfun.regexcheck(obj)) { $.firstpwd=obj.val; num = 0; }else{ num=1; } return $.utilfun.showprompt(num, obj); } }, _secondpwd:{ vf : function(obj) { var num = 0; var md5val=hex_md5(obj.val); if ($.firstpwd!=obj.val&&$.firstpwd!="") { num = 1; }else{ $("#yhmm").val(md5val.touppercase()); } return $.utilfun.showprompt(num, obj); } }, _loginname:{//校验登录名的唯一性 vf : function(obj) { if($.verification._def.vf(obj)){//先验证格式 var params={type:1,value:obj.val}; var num=$.utilfun.ajaxvf("/registeruserverify.go",params); var msg={errormsg : "用户名已存在!"}; return $.utilfun.showprompt(num, obj,msg); } } }, _email : { vf : function(obj) {//校验邮箱的的唯一性 if($.verification._def.vf(obj)){//先验证格式 var params={type:2,value:obj.val}; var num=$.utilfun.ajaxvf("/registeruserverify.go",params); var msg={errormsg : "此邮箱已经注册,请更换邮箱!"}; return $.utilfun.showprompt(num, obj,msg); } } }, _phone:{ vf:function(obj){//验证手机号的唯一性 if($.verification._def.vf(obj)){//先验证格式 var params={type:3,value:obj.val}; var num=$.utilfun.ajaxvf("/registeruserverify.go",params); var msg={errormsg : "此手机号已经注册,请更换手机号!"}; return $.utilfun.showprompt(num, obj,msg); } } }, //===================================================能够直接用正则表达式判断的===================================================== _code:{ vf:function(obj){ return $.verification._def.vf(obj); } }, _captcha:{ vf:function(obj){ return $.verification._def.vf(obj); } }, _tel:{ vf:function(obj){ return $.verification._def.vf(obj); } } }; /** * ================================================================================================================================= * ================公共方法========================================================================================================= * ================================================================================================================================= */ $.utilfun = { // 显示提示信息 showprompt : function(re, obj, vfdata) { vfdata = (vfdata == null ? $.vfdata[obj.fun] : vfdata);//获取提示信息 var formelement = $("#" + obj.id).parent().parent().find("p"); try { switch (re) { case 0: formelement.html($.vfdata.successhtml+(vfdata.successmsg==null?"":vfdata.successmsg)); return true; case 1: formelement.css("color", "red"); formelement.html($.vfdata.errorhtml+vfdata.errormsg+"<a id='"+obj.id+"' name='"+obj.id+"'></a>"); return false; case 2: formelement.css("color", "green"); formelement.html($.vfdata.pormpthtml+vfdata.promptmsg); break; default: formelement.html(""); return true; } } catch (e) { } }, regexcheck : function(obj) {// 正则表达式验证 var regex = $.vfdata[obj.fun].regex; if (regex == null) return false; regex = new regexp(regex); return regex.test(obj.val.trim()); return regex.test(obj.val); }, createelementjson : function(obj) {// 根据表单的属性创建json对象以便以调用 var json = eval("({'val':'" + obj.val() + "'," + "'id':'" + obj.attr("id") + "'," + "'regex':'" + obj.attr("regex") + "'," + "'fun':'" + obj.attr("fun") + "','must':'" + obj.attr("must") + "'})"); return json; }, getformelement : function(obj) {// 把需要验证的表单元素加到数组中 $.elementval = new array(); obj.find("input[id*='reg_']").each(function() { $.elementval.push($.utilfun.createelementjson($(this))); }); }, verification : function() {// 遍历验证 var size = $.elementval.length; var vfresult=true; for (var i = size - 1; i >= 0; i--) { var elementjson = $.elementval[i]; var elementvfresult=$.utilfun.doverification(elementjson); console.info(elementjson.id); if(!elementvfresult){//给错误的表单元素添加锚点 $("#point").attr("href","#"+elementjson.id); } vfresult=vfresult&&elementvfresult; } return vfresult; }, evalmodth : function(obj) { var funpakger = "$.verification."; var thispakger = obj.fun; var thismodth = ".vf(obj)"; var themodth = funpakger + thispakger + thismodth; return eval(themodth); }, doverification : function(obj) {// 执行验证方法 if(obj.must == "true"){//为必填项时 var valisnull=$.verification._null.vf(obj); if(valisnull&&obj.fun != "undefined"){//如果有验证方法的话 if($.utilfun.defaultverification(obj)){ return $.utilfun.evalmodth(obj); } }else { if(obj.val.trim()==""){ return false; }else{ return true; } } }else{//不为必填项时 if(obj.fun != "undefined"){//如果有验证方法的话 if(obj.val.trim()!=""){ if($.utilfun.defaultverification(obj)){ return $.utilfun.evalmodth(obj); } }else{ $.utilfun.showprompt(3, obj,$.vfdata["_null"]); return true; } }else{ return true; } } }, defaultverification : function(obj) {// 必须验证的方法 var vfresult = true; // vfresult = $.verification._null.vf(obj);//添加每个表单必须检验的方法 return vfresult; }, ajaxvf:function(url,params){//需要接口请求验证的 var num=0; $.ajax({ type :"post", url : url, datatype:"xml", async : false, data : params, // contenttype : "application/x-www-form-urlencoded; charset=utf-8", success:function(data){ var xmlobj= $.xml(data); var result= $.getnode("code",xmlobj.find("returninfo")); if("0"!=result){ num=1; } } }); return num; } }; /** * =============================================================================================================== * ========== 验证入口 ================================================================================= * =============================================================================================================== * * */ $.fn.regattrs = function() { $.utilfun.getformelement($(this)); var vfresult=$.utilfun.verification(); if(vfresult){ $(this).submit(); }else{ $("#point")[0].click(); } }; /* * 单个验证 */ $.fn.regattr = function() { $(this).blur(function() { var elementjson = $.utilfun.createelementjson($(this)); $.utilfun.doverification(elementjson); }); $(this).find("input[type!='password']").keyup(function() { var elementjson = $.utilfun.createelementjson($(this)); $.utilfun.doverification(elementjson); }); }; /* * 获取光表时提示 */ $.fn.prompt = function() { $(this).focus(function() { var elementjson = $.utilfun.createelementjson($(this)); if (elementjson.must) { $.utilfun.showprompt(2, elementjson); } }); }; /** * =============================================================================================================== * ========== 解决xml加载问题 ================================================================================= * =============================================================================================================== * * */ $.xml=function(data){ var xmlobj=null; if(window.activexobject){ var xml; xml = new activexobject("microsoft.xmldom"); xml.async = false; xml.loadxml(data); xmlobj=$(xml); }else{ xmlobj=$(data); } return xmlobj; }; //获取节点 $.getnode=function(key,obj){ var nodevalue=obj.children(key).text(); return nodevalue; }; }(jquery));
调用方式
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>表单验证</title> =====引入=======表单验证 js </head> <body> <!-- 锚点 --> <a id="aaa" name="aaa"></a> <!-- 锚点 --> <div id="content"> <div class="content_top"> <div class="register_jigou">机构用户注册</div> <div class="content_top_login">我已经注册,现在就<a href="/zzlc/jsp/login/login.jsp">登录</a></div> </div> <!-- 表单开始 --> <form id="regform" method="post" action="/userregister.go"> <div class="form_item"> <span class="label fl">机构简称:</span> <div class="item_input fl"> <input disabled="disabled" autocomplete="off" id="reg_companysimplename" name="jgjc_sv" type="text" class="text" /> <input type="hidden" autocomplete="off" id="reg_companysimplename_form" name="jgjc_sv"/> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl">组织机构代码:</span> <div class="item_input fl"> <input disabled="disabled" autocomplete="off" id="reg_companycode" name="zzjgdm_sv" type="text" class="text" /> <input type="hidden" autocomplete="off" id="reg_companycode_form" name="zzjgdm_sv"/> <a name="zcdz_sv"></a> </div> <p class="cuo fl"></p> </div> <div class="form_item"> <span class="label fl">机构类别:</span> <div class="item_input fl" > <input disabled="disabled" autocomplete="off" id="reg_companytype" name="dwlx_sv" type="text" class="text"/> <input type="hidden" autocomplete="off" id="reg_companytype_form" name="dwlx_sv"/> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl">注册地址:</span> <div class="item_input fl"> <input disabled="disabled" autocomplete="off" id="reg_regaddress" name="zcdz_sv" type="text" class="text" /> <input type="hidden" autocomplete="off" id="reg_regaddress_form" name="zcdz_sv"/> </div> <p class="dui fl"></p> </div> <h3>个人信息</h3> <div class="form_item"> <span class="label fl"><b>*</b>登录名:</span> <div class="item_input fl"> <input id="reg_loginname" fun="_loginname" value="wangjunadmin" name="yhm" must="true" type="text" class="text" /> </div> <p class="dui fl"></p> </div> <input id="yhmm" value="" type="hidden" name="yhmm"></input> <div class="form_item"> <span class="label fl"><b>*</b>登录密码:</span> <div class="item_input fl"> <input id="reg_pwd" autocomplete="off" value="" type="password" fun="_firstpwd" must="true" class="text" /> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl"><b>*</b>密码确认:</span> <div class="item_input fl"> <input md5="" autocomplete="off" id="reg_secondpwd" value="" fun="_secondpwd" must="true" type="password" class="text" /> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl"><b>*</b>姓名:</span> <div class="item_input fl"> <input name="xm" id="reg_name" value="" must="true" type="text" class="text" /> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl"><b>*</b>性别:</span> <div class="item_input fl" style="text-align: center;"> <input type="hidden" class="text" value="男" name="xb_sv" id="xb_sv"/> <select name="xb" id="reg_sex"> <option value="1">男</option> <option value="2">女</option> </select> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl"><b>*</b>电话:</span> <div class="item_input fl"> <input name="dh" must="true" value="010-888888888" id="reg_tel" fun="_tel" type="text" class="text" /> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl"><b>*</b>手机:</span> <div class="item_input fl"> <input name="phone" must="true" value="18610740826" id="reg_phone" fun="_phone" type="text" class="text" /> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl"><b>*</b>电子邮箱:</span> <div class="item_input fl"> <input id="reg_email" fun="_email" value="wj_dreamfly@163.com" name="mail" must="true" type="text" class="text" /> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl"><b>*</b>联系地址:</span> <div class="item_input fl"> <input id="reg_homeaddress" name="lxdz" type="text" value="朝阳区" must="true" class="text" /> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl"><b>*</b>部门:</span> <div class="item_input fl"> <input id="reg_emp" name="bm" type="text" value="信息部" must="true" class="text" /> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl"><b>*</b>职务:</span> <div class="item_input fl"> <input id="reg_duty" name="zw" type="text" value="开发" must="true" class="text" /> </div> <p class="dui fl"></p> </div> <div class="form_item"> <span class="label fl" style="color:#fff">。</span> <div class="login_btn fl"> <a href="javascript:void(0)" id="submit"> <span style="width:270px; line-height:3em; text-align: center; background-image:url(images/regbut1216.png); display:block;color: white; ">提交</span> </a> </div> </div> </form> <!-- 表单结束 --> <a href="#aaa" id="point"></a> </div> <div id="footer"></div> </body> </html> $(document).ready(function() { $("#point").click();//用锚点自动定位第一个验证失败的表单 $("#submit").click(function() {//提交按钮 $("#regform").regattrs();//注册方法自动验证表单中所有的元素 }); $("input").regattr();//失去光标时验证 $("input").prompt();//获取光标是提示信息 });
ps:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线xml/json互相转换工具:
在线格式化xml/在线压缩xml:
xml在线压缩/格式化工具:
xml代码在线格式化美化工具:
更多关于jquery相关内容感兴趣的读者可查看本站专题:《jquery操作xml技巧总结》、《jquery中ajax用法总结》、《jquery扩展技巧总结》、《jquery常用插件及用法总结》、《jquery拖拽特效与技巧总结》、《jquery表格(table)操作技巧汇总》、《jquery常见经典特效汇总》、《jquery动画与特效用法总结》及《jquery选择器用法总结》
希望本文所述对大家jquery程序设计有所帮助。