⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formvalidator.js

📁 人力资源管理系统
💻 JS
📖 第 1 页 / 共 2 页
字号:
		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;
			}
		}
	},
	
	//对input和select类型控件进行校验
	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 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($.formValidator.isEmpty(id) || $.formValidator.isEmpty(isEmpty.desid) ){
	                setting.isvalid = false;
				}else{
	                setting.isvalid = true;
				}
	    }
	}
};

//每个校验控件必须初始化的
$.fn.formValidator = function( msgOptions) 
{
	var setting = 
	{
		validatorgroup : "1",
		empty :false,
		submitonce : false,
		automodify : false,
		onshow :"请输入内容",
		onfocus: "请输入内容",
		oncorrect: "输入正确",
		onempty: "输入内容为空",
		defaultvalue : null,
		bind : true,
		validatetype : "InitValidator",
		tipcss : 
		{
			"left" : "10px",
			"top" : "1px",
			"height" : "20px",
			"width":"250px"
		},
		triggerevent:"blur"
	};
	
	//先合并整个配置(深度拷贝)
	msgOptions = msgOptions || {};
	$.extend(true,setting, msgOptions);

	//获取该校验组的全局配置信息
	var initConfig = $.formValidator.getInitConfig(setting.validatorgroup);

	return this.each(function()
	{
		var setting_temp = {};
		$.extend(setting_temp, setting);
		//自动形成TIP
		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;
		}
		//手动TIP
		else
		{
			if (!setting_temp.tipid){setting_temp.tipid = this.id+"Tip"};
			tip = setting_temp.tipid;
		}

		//每个控件都要保存这个配置信息
		$.formValidator.appendValid(this.id,setting_temp);

		//保存控件ID
		var validobjectids = initConfig.validobjectids;
		if(validobjectids.indexOf("#"+this.id+" ")==-1){
			initConfig.validobjectids = (validobjectids=="" ? "#"+this.id : validobjectids + ",#" + this.id);
		}

		//初始化显示信息
		if(!initConfig.alertmessage){
			$.formValidator.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){
					$.formValidator.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 = $.formValidator.oneIsValid(this.id,1);
				if(returnObj==null){return;}
				if(returnObj.ajax >= 0) 
				{
					if(this.validoldvalue!=$(this).val())
					{
						$.formValidator.setTipState(tip,"onLoad",settings[returnObj.ajax].onwait);
						$.formValidator.ajaxValid(returnObj);
					}
				}
				else
				{
					$.formValidator.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);
							$.formValidator.setTipState(tip,"onShow",setting.onshow);
						}
					}
				}
			});
		} 
		else if (srcTag == "SELECT")
		{
			//设置默认值
			if (defaultvalue){
				if(stype=="select-one"){
					jqobj.attr("value",defaultvalue);
				}
			}
			//获得焦点或单击
			//stype=="select-one"?"focus":"click"
			jqobj.bind(stype=="select-one"?"focus":"click", function(){	
				if(!initConfig.alertmessage){
					$.formValidator.setTipState(tip,"onFocus",setting.onfocus);
				}
			});
			//选择项目后触发
			jqobj.bind(stype=="select-one"?"change":"blur" , function()
			{
				var returnObj = $.formValidator.oneIsValid(this.id,1);	
				if(returnObj==null){return;}
				if ( returnObj.ajax >= 0 && this.validoldvalue!=$(this).val()){
					$.formValidator.ajaxValid(this.id, returnObj.setting);
				}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",
		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 = 
	{
		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:"AjaxValidator"
	};
	controlOptions = controlOptions || {};
	$.extend(true, settings, controlOptions);
	return this.each(function()
	{
		$.formValidator.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(!$.formValidator.getInitConfig(settings[0].validatorgroup).alertmessage){
				var ls_style = "onSuccess";
				if(onshow){ls_style="onShow"};
				$.formValidator.setTipState(settings[0].tipid,ls_style,settings[0].oncorrect);
			}
		}
	});
};

$.fn.unFormValidator = 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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -