(function($){$.formValidator={initConfig:function(controlOptions){var settings={debug:false,validatorGroup:"1",alertMessage:false,validObjects:[],ajaxObjects:"",forceValid:false,onSuccess:function(){return true},onError:$.noop,submitOnce:false,formID:"",submitButtonID:"",autoTip:false,tidyMode:false,errorFocus:true,wideWord:true,status:"",submitAfterAjaxPrompt:"当前有数据正在进行服务器端校验,请稍候",validCount:0,ajaxCountSubmit:0,ajaxCountValid:0,inIframe:false};controlOptions=controlOptions||{};$.extend(settings,controlOptions);if(settings.tidyMode){settings.errorFocus=false}if(settings.formID!=""){$("#"+settings.formID).submit(function(){return $.formValidator.bindSubmit(settings)})}else{if(settings.submitButtonID!=""){$("#"+settings.submitButtonID).click(function(){return $.formValidator.bindSubmit(settings)})}}$("body").data(settings.validatorGroup,settings)},bindSubmit:function(settings){if(settings.ajaxCountValid>0&&settings.submitAfterAjaxPrompt!=""){alert(settings.submitAfterAjaxPrompt);return false}return $.formValidator.pageIsValid(settings.validatorGroup)},sustainType:function(id,setting){var elem=$("#"+id).get(0);var srcTag=elem.tagName;var stype=elem.type;switch(setting.validateType){case"InitValidator":return true;case"InputValidator":return(srcTag=="INPUT"||srcTag=="TEXTAREA"||srcTag=="SELECT");case"CompareValidator":return((srcTag=="INPUT"||srcTag=="TEXTAREA")?(stype!="checkbox"&&stype!="radio"):false);case"AjaxValidator":return(stype=="text"||stype=="textarea"||stype=="file"||stype=="password"||stype=="select-one");case"RegexValidator":return((srcTag=="INPUT"||srcTag=="TEXTAREA")?(stype!="checkbox"&&stype!="radio"):false);case"FunctionValidator":return true}},appendValid:function(id,setting){if(!$.formValidator.sustainType(id,setting)){return -1}var srcjo=$("#"+id).get(0);if(setting.validateType=="InitValidator"||srcjo.settings==undefined){srcjo.settings=new Array()}var len=srcjo.settings.push(setting);srcjo.settings[len-1].index=len-1;return len-1},setTipState:function(elem,showclass,showmsg){var initConfig=$("body").data(elem.validatorGroup);var tip=$("#"+elem.settings[0].tipID);if(showmsg==null||showmsg==""){tip.hide()}else{if(initConfig.tidyMode){$("#fv_content").html(showmsg);elem.Tooltip=showmsg;if(showclass!="onError"){tip.hide()}}else{tip.show().removeClass().addClass(showclass).html(showmsg)}}},resetTipState:function(validatorGroup){if(validatorGroup==undefined){validatorGroup="1"}var initConfig=$("body").data(validatorGroup);$.each(initConfig.validObjects,function(){var elem=this.get(0);var setting=elem.settings[0];var passed=setting.defaultPassed;$.formValidator.setTipState(elem,passed?"onCorrect":"onShow",passed?setting.onCorrect:setting.onShow)})},setFailState:function(tipID,showmsg){var tip=$("#"+tipID);tip.removeClass().addClass("onError").html(showmsg)},showMessage:function(returnObj){var id=returnObj.id;var elem=$("#"+id).get(0);var isValid=returnObj.isValid;var setting=returnObj.setting;var showmsg="",showclass="";var intiConfig=$("body").data(elem.validatorGroup);if(!isValid){showclass="onError";if(setting.validateType=="AjaxValidator"){if(setting.lastValid==""){showclass="onLoad";showmsg=setting.onWait}else{showmsg=setting.onError}}else{showmsg=(returnObj.errormsg==""?setting.onError:returnObj.errormsg)}if(intiConfig.alertMessage){if(elem.validValueOld!=$(elem).val()){alert(showmsg)}}else{$.formValidator.setTipState(elem,showclass,showmsg)}}else{showmsg=$.formValidator.isEmpty(id)?setting.onEmpty:setting.onCorrect;$.formValidator.setTipState(elem,"onCorrect",showmsg)}return showmsg},showAjaxMessage:function(returnObj){var elem=$("#"+returnObj.id).get(0);var setting=elem.settings[returnObj.ajax];var validValueOld=elem.validValueOld;var validvalue=$(elem).val();returnObj.setting=setting;if(validValueOld!=validvalue||validValueOld==validvalue&&!elem.onceValided){$.formValidator.ajaxValid(returnObj)}else{if(setting.isValid!=undefined&&!setting.isValid){elem.lastshowclass="onError";elem.lastshowmsg=setting.onError}$.formValidator.setTipState(elem,elem.lastshowclass,elem.lastshowmsg)}},getLength:function(id){var srcjo=$("#"+id);var elem=srcjo.get(0);var sType=elem.type;var len=0;switch(sType){case"text":case"hidden":case"password":case"textarea":case"file":var val=srcjo.val();var initConfig=$("body").data(elem.validatorGroup);if(initConfig.wideWord){for(var i=0;i=19968&&val.charCodeAt(i)<=40869)?2:1)}}else{len=val.length}break;case"checkbox":case"radio":len=$("input[type='"+sType+"'][name='"+srcjo.attr("name")+"']:checked").length;break;case"select-one":len=elem.options?elem.options.selectedIndex:-1;break;case"select-multiple":len=$("select[name="+elem.name+"] option:selected").length;break}return len},isEmpty:function(id){return($("#"+id).get(0).settings[0].empty&&$.formValidator.getLength(id)==0)},isOneValid:function(id){return $.formValidator.oneIsValid(id).isValid},oneIsValid:function(id){var returnObj=new Object();var elem=$("#"+id).get(0);returnObj.initConfig=$("body").data(elem.validatorGroup);returnObj.id=id;returnObj.ajax=-1;returnObj.errormsg="";var settings=elem.settings;var settingslen=settings.length;var validateType;if(settingslen==1){settings[0].bind=false}if(!settings[0].bind){return null}for(var i=0;i0){return false}$.each(initConfig.validObjects,function(){if(this.settings[0].bind){name=this.name;if(name_list.indexOf("^"+name+"^")==-1){onceValided=this.onceValided==undefined?false:this.onceValided;if(name){name_list=name_list+name+"^"}returnObj=$.formValidator.oneIsValid(this.id);if(returnObj){if(!returnObj.isValid){isValid=false;errorMessage=returnObj.errormsg==""?returnObj.setting.onError:returnObj.errormsg;errorlist[errorlist.length]=errorMessage;if(thefirstid==null){thefirstid=returnObj.id}if(firstErrorMessage==""){firstErrorMessage=errorMessage}}if(!initConfig.alertMessage){var tipID=this.settings[0].tipID;if(error_tip.indexOf("^"+tipID+"^")==-1){if(!returnObj.isValid){error_tip=error_tip+tipID+"^"}$.formValidator.showMessage(returnObj)}}}}}});if(isValid){initConfig.onSuccess();if(initConfig.submitOnce){$(":submit,:button,:reset").attr("disabled",true)}}else{initConfig.onError(firstErrorMessage,$("#"+thefirstid).get(0),errorlist);if(thefirstid&&initConfig.errorFocus){$("#"+thefirstid).focus()}}initConfig.status="init";return !initConfig.debug&&isValid},ajaxValid:function(returnObj){var id=returnObj.id;var srcjo=$("#"+id);var elem=srcjo.get(0);var initConfig=returnObj.initConfig;var settings=elem.settings;var setting=settings[returnObj.ajax];var ls_url=setting.url;var validatorGroup=elem.validatorGroup;var initConfig=$("body").data(validatorGroup);var parm=$(initConfig.ajaxObjects).serialize();parm="clientid="+id+"&"+(setting.randNumberName?setting.randNumberName+"="+((new Date().getTime())+Math.round(Math.random()*10000)):"")+(parm.length>0?"&"+parm:"");ls_url=ls_url+(ls_url.indexOf("?")>-1?("&"+parm):("?"+parm));$.ajax({type:setting.type,url:ls_url,cache:setting.cache,data:setting.data,async:setting.async,timeout:setting.timeout,dataType:setting.dataType,success:function(data,textStatus,jqXHR){var lb_ret,ls_status,ls_msg;$.formValidator.dealAjaxRequestCount(validatorGroup,-1);lb_ret=setting.success(data,textStatus,jqXHR);setting.isValid=lb_ret;if(lb_ret){ls_status="onCorrect";ls_msg=settings[0].onCorrect}else{ls_status="onError";ls_msg=setting.onError}$.formValidator.setTipState(elem,ls_status,ls_msg);if(returnObj.initConfig.status=="sumbitingWithAjax"&&returnObj.initConfig.ajaxCountSubmit==0){if(initConfig.formID!=""){$("#"+initConfig.formID).trigger("submit")}else{if(initConfig.formID!=""){$("#"+initConfig.submitButtonID).trigger("click")}}}},complete:function(jqXHR,textStatus){if(setting.buttons&&setting.buttons.length>0){setting.buttons.attr({"disabled":false})}setting.complete(jqXHR,textStatus)},beforeSend:function(jqXHR,configs){if(this.lastXMLHttpRequest){this.lastXMLHttpRequest.abort()}this.lastXMLHttpRequest=jqXHR;if(setting.buttons&&setting.buttons.length>0){setting.buttons.attr({"disabled":true})}var isValid=setting.beforeSend(jqXHR,configs);if(isValid){setting.isValid=false;$.formValidator.setTipState(elem,"onLoad",settings[returnObj.ajax].onWait)}setting.lastValid="-1";if(isValid){$.formValidator.dealAjaxRequestCount(validatorGroup,1)}return isValid},error:function(jqXHR,textStatus,errorThrown){$.formValidator.dealAjaxRequestCount(validatorGroup,-1);$.formValidator.setTipState(elem,"onError",setting.onError);setting.isValid=false;setting.error(jqXHR,textStatus,errorThrown)},processData:setting.processData})},dealAjaxRequestCount:function(validatorGroup,val){var initConfig=$("body").data(validatorGroup);initConfig.ajaxCountValid=initConfig.ajaxCountValid+val;if(initConfig.status=="sumbitingWithAjax"){initConfig.ajaxCountSubmit=initConfig.ajaxCountSubmit+val}},regexValid:function(returnObj){var id=returnObj.id;var setting=returnObj.setting;var srcTag=$("#"+id).get(0).tagName;var elem=$("#"+id).get(0);var isValid;if(elem.settings[0].empty&&elem.value==""){setting.isValid=true}else{var regexArray=setting.regExp;setting.isValid=false;if((typeof regexArray)=="string"){regexArray=[regexArray]}$.each(regexArray,function(){var r=this;if(setting.dataType=="enum"){r=eval("regexEnum."+r)}if(r==undefined||r==""){return false}isValid=(new RegExp(r,setting.param)).test($(elem).val());if(setting.compareType=="||"&&isValid){setting.isValid=true;return false}if(setting.compareType=="&&"&&!isValid){return false}});if(!setting.isValid){setting.isValid=isValid}}},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=$.formValidator.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 lb_go_on=false;if(sType=="select-one"||sType=="select-multiple"){setting.type="size"}var type=setting.type;if(type=="size"){if(!emptyError){lb_go_on=true}if(lb_go_on){val=len}}else{if(type=="date"||type=="datetime"){var isok=false;if(type=="date"){lb_go_on=isDate(val)}if(type=="datetime"){lb_go_on=isDate(val)}if(lb_go_on){val=new Date(val);setting.min=new Date(setting.min);setting.max=new Date(setting.max)}}else{stype=(typeof setting.min);if(stype=="number"){val=(new Number(val)).valueOf();if(!isNaN(val)){lb_go_on=true}}if(stype=="string"){lb_go_on=true}}}setting.isValid=false;if(lb_go_on){if(valsetting.max){if(valsetting.min&&setting.onErrorMax){returnObj.errormsg=setting.onErrorMax}}else{setting.isValid=true}}break}},compareValid:function(returnObj){var id=returnObj.id;var setting=returnObj.setting;var srcjo=$("#"+id);var desjo=$("#"+setting.desID);var ls_dataType=setting.dataType;curvalue=srcjo.val();ls_data=desjo.val();if(ls_dataType=="number"){if(!isNaN(curvalue)&&!isNaN(ls_data)){curvalue=parseFloat(curvalue);ls_data=parseFloat(ls_data)}else{return}}if(ls_dataType=="date"||ls_dataType=="datetime"){var isok=false;if(ls_dataType=="date"){isok=(isDate(curvalue)&&isDate(ls_data))}if(ls_dataType=="datetime"){isok=(isDateTime(curvalue)&&isDateTime(ls_data))}if(isok){curvalue=new Date(curvalue);ls_data=new Date(ls_data)}else{return}}switch(setting.operateor){case"=":setting.isValid=(curvalue==ls_data);break;case"!=":setting.isValid=(curvalue!=ls_data);break;case">":setting.isValid=(curvalue>ls_data);break;case">=":setting.isValid=(curvalue>=ls_data);break;case"<":setting.isValid=(curvalue");if(initConfig.inIframe){formValidateTip.hide()}formValidateTip.appendTo($("body")).css({left:x+"px",top:y+"px"}).prepend($('
').css(setting_temp.tipCss));setting.relativeID=relativeID}}else{jqobj.showTooltips()}}setting.tipID=tip;$.formValidator.appendValid(this.id,setting);if($.inArray(jqobj,initConfig.validObjects)==-1){if(setting_temp.ajax){var ajax=initConfig.ajaxObjects;initConfig.ajaxObjects=ajax+(ajax!=""?",#":"#")+this.id}initConfig.validObjects.push(this)}if(!initConfig.alertMessage){$.formValidator.setTipState(this,"onShow",setting.onShow)}var srcTag=this.tagName.toLowerCase();var stype=this.type;var defaultval=setting.defaultValue;if(defaultval){jqobj.val(defaultval)}if(srcTag=="input"||srcTag=="textarea"){jqobj.focus(function(){if(!initConfig.alertMessage){var tipjq=$("#"+tip);this.lastshowclass=tipjq.attr("class");this.lastshowmsg=tipjq.html();$.formValidator.setTipState(this,"onFocus",setting.onFocus)}if(stype=="password"||stype=="text"||stype=="textarea"||stype=="file"){this.validValueOld=jqobj.val()}});jqobj.bind(setting.triggerEvent,function(){var settings=this.settings;var returnObj=$.formValidator.oneIsValid(this.id);if(returnObj==null){return}if(returnObj.ajax>=0){$.formValidator.showAjaxMessage(returnObj)}else{var showmsg=$.formValidator.showMessage(returnObj);if(!returnObj.isValid){var auto=setting.autoModify&&(this.type=="text"||this.type=="textarea"||this.type=="file");if(auto){$(this).val(this.validValueOld);if(!initConfig.alertMessage){$.formValidator.setTipState(this,"onShow",setting.onShow)}}else{if(initConfig.forceValid||setting.forceValid){alert(showmsg);this.focus()}}}}})}else{if(srcTag=="select"){jqobj.bind({focus:function(){if(!initConfig.alertMessage){$.formValidator.setTipState(this,"onFocus",setting.onFocus)}},blur:function(){$(this).trigger("change")},change:function(){var returnObj=$.formValidator.oneIsValid(this.id);if(returnObj==null){return}if(returnObj.ajax>=0){$.formValidator.showAjaxMessage(returnObj)}else{$.formValidator.showMessage(returnObj)}}})}}})};$.fn.inputValidator=function(controlOptions){var settings={isValid:false,min:0,max:99999999999999,type:"size",onError:"输入错误",validateType:"InputValidator",empty:{leftEmpty:true,rightEmpty:true,leftEmptyError:null,rightEmptyError:null}};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formValidator.appendValid(this.id,settings)})};$.fn.compareValidator=function(controlOptions){var settings={isValid:false,desID:"",operateor:"=",onError:"输入错误",validateType:"CompareValidator"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formValidator.appendValid(this.id,settings)})};$.fn.regexValidator=function(controlOptions){var settings={isValid:false,regExp:"",param:"i",dataType:"string",compareType:"||",onError:"输入的格式不正确",validateType:"RegexValidator"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formValidator.appendValid(this.id,settings)})};$.fn.functionValidator=function(controlOptions){var settings={isValid:true,fun:function(){this.isValid=true},validateType:"FunctionValidator",onError:"输入错误"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formValidator.appendValid(this.id,settings)})};$.fn.ajaxValidator=function(controlOptions){var settings={type:"GET",url:"",dataType:"html",timeout:100000,data:null,async:true,cache:false,beforeSend:function(){return true},success:function(){return true},complete:function(){},processData:true,error:function(){},isValid:false,lastValid:"",buttons:null,oneceValid:false,randNumberName:"rand",onError:"服务器校验没有通过",onWait:"正在等待服务器返回数据",ajaxExistsError:"前面的校验尚未完成,请稍候...",validateType:"AjaxValidator"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){var initConfig=$("body").data(this.validatorGroup);var ajax=initConfig.ajaxObjects;if((ajax+",").indexOf("#"+this.id+",")==-1){initConfig.ajaxObjects=ajax+(ajax!=""?",#":"#")+this.id}this.validatorAjaxIndex=$.formValidator.appendValid(this.id,settings)})};$.fn.defaultPassed=function(onShow){return this.each(function(){var settings=this.settings;settings[0].defaultPassed=true;for(var i=1;i");$("body").append(fvtt);fvtt.before("")}return this.each(function(){jqobj=$(this);s=$("");b=$("");this.tooltip=$("").append(s).append(b).css({"filter":"alpha(opacity:95)","KHTMLOpacity":"0.95","MozOpacity":"0.95","opacity":"0.95"});jqobj.bind({mouseover:function(e){$("#fvtt").append(this.tooltip);$("#fv_content").html(this.Tooltip);$.formValidator.localTooltip(e)},mouseout:function(){$("#fvtt").empty()},mousemove:function(e){$("#fv_content").html(this.Tooltip);$.formValidator.localTooltip(e)}})})}})(jQuery);