﻿var jQuery_formV_initConfig;(function($){$.formV={sustainType:function(id,setting){var elem=$("#"+id).get(0);var srcTag=elem.tagName;var stype=elem.type;switch(setting.validatetype){case"InitV":return true;case"InputV":if(srcTag=="INPUT"||srcTag=="TEXTAREA"||srcTag=="SELECT"){return true}else{return false}case"CompareV":if(srcTag=="INPUT"||srcTag=="TEXTAREA"){if(stype=="checkbox"||stype=="radio"){return false}else{return true}}return false;case"AjaxV":if(stype=="text"||stype=="textarea"||stype=="file"||stype=="select-one"){return true}else{return false}case"RegexV":if(srcTag=="INPUT"||srcTag=="TEXTAREA"){if(stype=="checkbox"||stype=="radio"){return false}else{return true}}return false;case"FunctionV":return true}},initConfig:function(controlOptions){var settings={debug:false,Vgroup:"1",alertmessage:false,validobjectids:"",onsuccess:function(){return true},onerror:function(){},submitonce:false,formid:"",autotip:false};controlOptions=controlOptions||{};$.extend(settings,controlOptions);if(settings.formid!=""){$("#"+settings.formid).submit(function(){return $.formV.pageIsValid("1")})};if(jQuery_formV_initConfig==null){jQuery_formV_initConfig=new Array()}jQuery_formV_initConfig.push(settings)},appendValid:function(id,setting){if(!$.formV.sustainType(id,setting))return-1;var srcjo=$("#"+id).get(0);if(setting.validatetype=="InitV"||!srcjo.settings||srcjo.settings==undefined){srcjo.settings=new Array()}var len=srcjo.settings.push(setting);srcjo.settings[len-1].index=len-1;return len-1},getInitConfig:function(Vgroup){if(jQuery_formV_initConfig!=null){for(i=0;i<jQuery_formV_initConfig.length;i++){if(Vgroup==jQuery_formV_initConfig[i].Vgroup){return jQuery_formV_initConfig[i]}}}return null},triggerValidate:function(returnObj){switch(returnObj.setting.validatetype){case"InputV":$.formV.inputValid(returnObj);break;case"CompareV":$.formV.compareValid(returnObj);break;case"AjaxV":$.formV.ajaxValid(returnObj);break;case"RegexV":$.formV.regexValid(returnObj);break;case"FunctionV":$.formV.functionValid(returnObj);break}},setTipState:function(tipid,showclass,showmsg){var tip=$("#"+tipid);if(showmsg==null||showmsg==""){tip.hide()}else{tip.show();tip.removeClass();tip.addClass(showclass);tip.html("<nobr>"+showmsg+"</nobr>")}},setFailState:function(tipid,showmsg){var tip=$("#"+tipid);tip.removeClass();tip.addClass("onError");tip.html(showmsg)},showMessage:function(returnObj){var id=returnObj.id;var isvalid=returnObj.isvalid;var setting=returnObj.setting;var showmsg="";var showclass="";var settings=$("#"+id).get(0).settings;var intiConfig=$.formV.getInitConfig(settings[0].Vgroup);if(!isvalid){if(setting.validatetype=="AjaxV"){if(setting.lastValid==""){showclass="onLoad";showmsg=setting.onwait}else{showclass="onError";showmsg=setting.onerror}}else{showmsg=(returnObj.errormsg==""?setting.onerror:returnObj.errormsg);showclass="onError"}if(intiConfig.alertmessage){var elem=$("#"+id).get(0);if(elem.validoldvalue!=$(elem).val()){alert(showmsg)}}else{$.formV.setTipState(settings[0].tipid,showclass,showmsg)}}else{if(!intiConfig.alertmessage){var showmsg="";if($.formV.isEmpty(id)){showmsg=setting.onempty}else{showmsg=setting.oncorrect}$.formV.setTipState(setting.tipid,"onSuccess",showmsg)}}},getLength:function(id){var srcjo=$("#"+id);sType=srcjo.get(0).type;var len=0;switch(sType){case"text":case"hidden":case"password":case"textarea":case"file":var val=srcjo.val();for(var i=0;i<val.length;i++){if(val.charCodeAt(i)>=0x4e00&&val.charCodeAt(i)<=0x9fa5){len+=2}else{len++}}break;case"checkbox":case"radio":len=$("input[@type='"+sType+"'][@name='"+srcjo.attr("name")+"'][@checked]").length;break;case"select-one":len=srcjo.get(0).options?srcjo.get(0).options.selectedIndex:-1;break;case"select-multiple":len=$("select[@name="+srcjo.get(0).name+"] option[@selected]").length;break}return len},isEmpty:function(id){if($("#"+id).get(0).settings[0].empty&&$.formV.getLength(id)==0){return true}else{return false}},isOneValid:function(id){return $.formV.oneIsValid(id,1).isvalid},oneIsValid:function(id,index){var returnObj=new Object();returnObj.id=id;returnObj.ajax=-1;returnObj.errormsg="";var elem=$("#"+id).get(0);var settings=elem.settings;var settingslen=settings.length;if(settingslen==1){settings[0].bind=false}if(!settings[0].bind){return null}for(var i=0;i<settingslen;i++){if(i==0){if($.formV.isEmpty(id)){returnObj.isvalid=true;returnObj.setting=settings[0];break}continue}returnObj.setting=settings[i];if(settings[i].validatetype!="AjaxV"){$.formV.triggerValidate(returnObj)}else{returnObj.ajax=i}if(!settings[i].isvalid){returnObj.isvalid=false;returnObj.setting=settings[i];break}else{returnObj.isvalid=true;returnObj.setting=settings[0];if(settings[i].validatetype=="AjaxV")break}}return returnObj},resetTipState:function(Vgroup){var initConfig=$.formV.getInitConfig(Vgroup);var jqObjs=$(initConfig.validobjectids);jqObjs.each(function(){var setting0=this.settings[0];$.formV.setTipState(setting0.tipid,"onShow",setting0.onshow)})},pageIsValid:function(Vgroup){if(Vgroup==null||Vgroup==undefined)Vgroup="1";var isvalid=true;var thefirstid="",thefirsterrmsg;var returnObj,setting;var error_tip="^";var initConfig=$.formV.getInitConfig(Vgroup);var jqObjs=$(initConfig.validobjectids);jqObjs.each(function(i,elem){if(elem.settings[0].bind){returnObj=$.formV.oneIsValid(elem.id,1);if(returnObj){var tipid=elem.settings[0].tipid;if(!returnObj.isvalid){isvalid=false;if(thefirstid==""){thefirstid=returnObj.id;thefirsterrmsg=(returnObj.errormsg==""?returnObj.setting.onerror:returnObj.errormsg)}}if(!initConfig.alertmessage){if(error_tip.indexOf("^"+tipid+"^")==-1){error_tip=error_tip+tipid+"^";if(!returnObj.isvalid){error_tip=error_tip+tipid+"^"}$.formV.showMessage(returnObj)}}}}});if(isvalid){isvalid=initConfig.onsuccess();if(initConfig.submitonce){$("input[@type='submit']").attr("disabled",true)}}else{var obj=$("#"+thefirstid).get(0);initConfig.onerror(thefirsterrmsg,obj);if(thefirstid!=""){$("#"+thefirstid).focus()}}return!initConfig.debug&&isvalid},ajaxValid:function(returnObj){var id=returnObj.id;var srcjo=$("#"+id);var setting=srcjo.get(0).settings[returnObj.ajax];var ls_data="";if(srcjo.size()==0&&srcjo.get(0).settings[0].empty){returnObj.setting=$("#"+id).get(0).settings[0];returnObj.isvalid=true;$.formV.showMessage(returnObj);setting.isvalid=true;return}ls_data+="clientid="+id+"&"+id+"="+encodeURIComponent(srcjo.val())+"&"+setting.data;$.ajax({mode:"abort",type:setting.type,url:setting.url,cache:setting.cache,data:ls_data,async:setting.async,dataType:setting.datatype,success:function(data){setting0=srcjo.get(0).settings[0];if(setting.success(data)){$.formV.setTipState(setting0.tipid,"onSuccess",setting0.oncorrect);setting.isvalid=true}else{$.formV.setTipState(setting0.tipid,"onError",setting.onerror);setting.isvalid=false}},complete:function(){if(setting.buttons&&setting.buttons.length>0)setting.buttons.attr({"disabled":false});setting.complete},beforeSend:function(xhr){if(setting.buttons&&setting.buttons.length>0)setting.buttons.attr({"disabled":true});var isvalid=setting.beforesend(xhr);if(isvalid)setting.isvalid=false;setting.lastValid="-1";return isvalid},error:function(){setting0=srcjo.get(0).settings[0];$.formV.setTipState(setting0.tipid,"onError",setting.onerror);setting.isvalid=false;setting.error()},processData:setting.processdata})},regexValid:function(returnObj){var id=returnObj.id;var setting=returnObj.setting;var srcTag=$("#"+id).get(0).tagName;var elem=$("#"+id).get(0);if(elem.settings[0].empty&&elem.value==""){setting.isvalid=true}else{var regexpress=setting.regexp;if(setting.datatype=="enum"){regexpress=eval("regexEnum."+regexpress)}if(regexpress==undefined||regexpress==""){setting.isvalid=false;return}var exp=new RegExp(regexpress,setting.param);if(exp.test($("#"+id).val())){setting.isvalid=true}else{setting.isvalid=false}}},functionValid:function(returnObj){var id=returnObj.id;var setting=returnObj.setting;var srcjo=$("#"+id);var lb_ret=setting.fun(srcjo.val(),srcjo.get(0));if(lb_ret!=undefined){if(typeof lb_ret=="string"){setting.isvalid=false;returnObj.errormsg=lb_ret}else{setting.isvalid=lb_ret}}},inputValid:function(returnObj){var id=returnObj.id;var setting=returnObj.setting;var srcjo=$("#"+id);var elem=srcjo.get(0);var val=srcjo.val();var sType=elem.type;var len=$.formV.getLength(id);var empty=setting.empty,emptyerror=false;switch(sType){case"text":case"hidden":case"password":case"textarea":case"file":if(setting.type=="size"){empty=setting.empty;if(!empty.leftempty){emptyerror=(val.replace(/^[ \s]+/,'').length!=val.length)}if(!emptyerror&&!empty.rightempty){emptyerror=(val.replace(/[ \s]+$/,'').length!=val.length)}if(emptyerror&&empty.emptyerror){returnObj.errormsg=empty.emptyerror}}case"checkbox":case"select-one":case"select-multiple":case"radio":var li_panduan=false;if(sType=="select-one"||sType=="select-multiple"){setting.type="size"}if(setting.type=="size"){if(!emptyerror){li_panduan=true}if(li_panduan){val=len}}else{stype=(typeof setting.min);if(stype=="number"){val=(new Number(val)).valueOf();if(!isNaN(val)){li_panduan=true}}if(stype=="string"){li_panduan=true}}if(li_panduan){if(val<setting.min||val>setting.max){if(val<setting.min&&setting.onerrormin){returnObj.errormsg=setting.onerrormin}if(val>setting.min&&setting.onerrormax){returnObj.errormsg=setting.onerrormax}setting.isvalid=false}else{setting.isvalid=true}}else{setting.isvalid=false}break}},compareValid:function(returnObj){var id=returnObj.id;var setting=returnObj.setting;var srcjo=$("#"+id);var desjo=$("#"+setting.desid);setting.isvalid=false;curvalue=srcjo.val();ls_data=desjo.val();if(setting.datatype=="number"){if(!isNaN(curvalue)&&!isNaN(ls_data)){curvalue=parseFloat(curvalue);ls_data=parseFloat(ls_data)}else{return}}switch(setting.operateor){case"=":if(curvalue==ls_data){setting.isvalid=true}break;case"!=":if(curvalue!=ls_data){setting.isvalid=true}break;case">":if(curvalue>ls_data){setting.isvalid=true}break;case">=":if(curvalue>=ls_data){setting.isvalid=true}break;case"<":if(curvalue<ls_data){setting.isvalid=true}break;case"<=":if(curvalue<=ls_data){setting.isvalid=true}break;case"oneok":if($.formV.isEmpty(id)||$.formV.isEmpty(isEmpty.desid)){setting.isvalid=false}else{setting.isvalid=true}}}};$.fn.formV=function(msgOptions){var setting={Vgroup:"1",empty:false,submitonce:false,automodify:false,onshow:"",onfocus:"",oncorrect:"OK",onempty:"",defaultvalue:null,bind:true,validatetype:"InitV",tipcss:{"left":"10px","top":"1px","height":"20px","width":"250px"},triggerevent:"blur"};msgOptions=msgOptions||{};$.extend(true,setting,msgOptions);var initConfig=$.formV.getInitConfig(setting.Vgroup);return this.each(function(){var setting_temp={};$.extend(setting_temp,setting);var tip="";if(initConfig.autotip){if(!setting_temp.tipid){setting_temp.tipid=this.id+"Tip"};tip=setting_temp.tipid;if(!setting_temp.relativeid){setting_temp.relativeid=this.id};aftertip=setting_temp.relativeid;var y=getAbsoluteTop(aftertip)-3;var x=getElementWidth(aftertip)+getAbsoluteLeft(aftertip);if($("#"+tip).length==0){$("<div class='formValidateTip'></div>").appendTo($("body")).css({left:x+"px",top:y+"px"}).prepend($('<div id="'+tip+'"></div>').css(setting_temp.tipcss))}setting_temp.tipid=tip}else{if(!setting_temp.tipid){setting_temp.tipid=this.id+"Tip"};tip=setting_temp.tipid}$.formV.appendValid(this.id,setting_temp);var validobjectids=initConfig.validobjectids;if(validobjectids.indexOf("#"+this.id+" ")==-1){initConfig.validobjectids=(validobjectids==""?"#"+this.id:validobjectids+",#"+this.id)}if(!initConfig.alertmessage){$.formV.setTipState(tip,"onShow",setting.onshow)}var srcTag=this.tagName;var stype=this.type;var defaultvalue=setting.defaultvalue;var jqobj=$(this);if(srcTag=="INPUT"||srcTag=="TEXTAREA"){if(defaultvalue){if(stype=="checkbox"||stype=="radio"){if(stype=="radio"){if(this.value==defaultvalue){jqobj.attr("checked",true)}}else{jqobj.attr("checked",$.inArray(this.value,defaultvalue)>=0)}}else{jqobj.val(defaultvalue)}}jqobj.focus(function(){if(!initConfig.alertmessage){$.formV.setTipState(tip,"onFocus",setting.onfocus)}if(stype=="password"||stype=="text"||stype=="textarea"||stype=="file"){this.validoldvalue=jqobj.val()}});jqobj.bind(setting.triggerevent,function(){var settings=this.settings;var returnObj=$.formV.oneIsValid(this.id,1);if(returnObj==null){return}if(returnObj.ajax>=0){if(this.validoldvalue!=$(this).val()){$.formV.setTipState(tip,"onLoad",settings[returnObj.ajax].onwait);$.formV.ajaxValid(returnObj)}}else{$.formV.showMessage(returnObj);if(!returnObj.isvalid){var auto=setting.automodify&&(this.type=="text"||this.type=="textarea"||this.type=="file");if(auto&&!initConfig.alertmessage){alert(returnObj.setting.onerror);$.formV.setTipState(tip,"onShow",setting.onshow)}}}})}else if(srcTag=="SELECT"){if(defaultvalue){if(stype=="select-one"){jqobj.attr("value",defaultvalue)}}jqobj.bind(stype=="select-one"?"focus":"click",function(){if(!initConfig.alertmessage){$.formV.setTipState(tip,"onFocus",setting.onfocus)}});jqobj.bind(stype=="select-one"?"change":"blur",function(){var returnObj=$.formV.oneIsValid(this.id,1);if(returnObj==null){return}if(returnObj.ajax>=0&&this.validoldvalue!=$(this).val()){$.formV.ajaxValid(this.id,returnObj.setting)}else{$.formV.showMessage(returnObj)}})}})};$.fn.inputV=function(controlOptions){var settings={isvalid:false,min:0,max:99999999999999,type:"size",onerror:"输入错误",validatetype:"InputV",empty:{leftempty:true,rightempty:true,leftemptyerror:null,rightemptyerror:null}};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formV.appendValid(this.id,settings)})};$.fn.compareV=function(controlOptions){var settings={isvalid:false,desid:"",operateor:"=",onerror:"输入错误",validatetype:"CompareV"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formV.appendValid(this.id,settings)})};$.fn.regexV=function(controlOptions){var settings={isvalid:false,regexp:"",param:"i",datatype:"string",onerror:"输入的格式不正确",validatetype:"RegexV"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formV.appendValid(this.id,settings)})};$.fn.functionV=function(controlOptions){var settings={isvalid:true,fun:function(){this.isvalid=true},validatetype:"FunctionV",onerror:"输入错误"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formV.appendValid(this.id,settings)})};$.fn.ajaxV=function(controlOptions){var settings={isvalid:false,lastValid:"",type:"GET",url:"",addidvalue:true,datatype:"html",data:"",async:true,cache:false,beforesend:function(){return true},success:function(){return true},complete:function(){},processdata:false,error:function(){},buttons:null,onerror:"服务器校验没有通过",onwait:"正在等待服务器返回数据",validatetype:"AjaxV"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formV.appendValid(this.id,settings)})};$.fn.defaultPassed=function(onshow){return this.each(function(){var settings=this.settings;for(var i=1;i<settings.length;i++){settings[i].isvalid=true;if(!$.formV.getInitConfig(settings[0].Vgroup).alertmessage){var ls_style="onSuccess";if(onshow){ls_style="onShow"};$.formV.setTipState(settings[0].tipid,ls_style,settings[0].oncorrect)}}})};$.fn.unFormV=function(unbind){return this.each(function(){this.settings[0].bind=!unbind;if(unbind){$("#"+this.settings[0].tipid).hide()}else{$("#"+this.settings[0].tipid).show()}})}})(jQuery);function getElementWidth(objectId){x=document.getElementById(objectId);return x.offsetWidth}function getAbsoluteLeft(objectId){o=document.getElementById(objectId);oLeft=o.offsetLeft;while(o.offsetParent!=null){oParent=o.offsetParent;oLeft+=oParent.offsetLeft;o=oParent}return oLeft}function getAbsoluteTop(objectId){o=document.getElementById(objectId);oTop=o.offsetTop;while(o.offsetParent!=null){oParent=o.offsetParent;oTop+=oParent.offsetTop;o=oParent}return oTop}
