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

📄 formvalidator.js

📁 基于JQuery的表单验证脚本程序 基于JQuery的表单验证脚本程序
💻 JS
📖 第 1 页 / 共 2 页
字号:
//====================================================================================================
// [插件名称] jQuery formValidator
//----------------------------------------------------------------------------------------------------
// [描    述] jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面的分离。对一个表
//            单对象,你只需要写一行代码就可以轻松实现20种以上的脚本控制。现支持一个表单元素累加很多种
//            校验方式,采用配置信息的思想,而不是把信息写在表单元素上,能比较完美的实现ajax请求。
//----------------------------------------------------------------------------------------------------
// [作者网名] 猫冬	
// [日    期] 2008-01-11	
// [邮    箱] wzmaodong@126.com
// [作者博客] http://wzmaodong.cnblogs.com
//====================================================================================================
var jQuery_formValidator_initConfig;
(function($) {

$.formValidator = 
{
	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":
				if (srcTag == "INPUT" || srcTag == "TEXTAREA" || srcTag == "SELECT") return true;
				return false;
			case "CompareValidator":
				if (srcTag == "INPUT" || srcTag == "TEXTAREA")
				{
					if (stype == "checkbox" || stype == "radio") return false;
					return true;
				}
				return false;
			case "AjaxValidator":
				if (stype == "text" || stype == "textarea" || stype == "file" || stype == "select-one") return true;
				return false;
			case "RegexValidator":
				if (srcTag == "INPUT" || srcTag == "TEXTAREA")
				{
					if (stype == "checkbox" || stype == "radio") return false;
					return true;
				}
				return false;
		}
	},
    
	initConfig : function(controlOptions)
	{
		var settings = 
		{
			validatorGroup : "1",
			alertMessage:false,
			onSuccess: function() {return true;},
			onError:function() {},
			submitOnce:false
		};
		controlOptions = controlOptions || {};
		$.extend(settings, controlOptions);
		if (jQuery_formValidator_initConfig == null ) jQuery_formValidator_initConfig = new Array();
		jQuery_formValidator_initConfig.push( settings );
	},
	
	appendValid : function(id, setting )
	{
		if(!$.formValidator.sustainType(id,setting)) return -1;
		var srcjo = $("#"+id).get(0);   
		if (setting.validateType=="InitValidator" || !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( validatorGroup )
	{
		if(jQuery_formValidator_initConfig!=null)
		{
		    for(i=0;i<jQuery_formValidator_initConfig.length;i++)
		    {
		        if(validatorGroup==jQuery_formValidator_initConfig[i].validatorGroup)
		            return jQuery_formValidator_initConfig[i];
		    }
		}
		return null;
	},
	
	triggerValidate : function(id, setting)
	{
		switch(setting.validateType)
		{
			case "InputValidator":
				$.formValidator.InputValid(id, setting);
				break;
			case "CompareValidator":
				$.formValidator.CompareValid(id, setting);
				break;
			case "AjaxValidator":
				$.formValidator.AjaxValid(id, setting);
				break;
			case "RegexValidator":
				$.formValidator.RegexValid(id, setting);
				break;
		}
	},
	
	SetTipState : function(tipid,showclass,showmsg)
	{
	    var tip = $("#"+tipid);
	    tip.removeClass();
	    tip.addClass( showclass );
	    tip.html( showmsg );
	},
	
	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 settings = $("#"+id).get(0).settings;
		var showclass = ""
		if (!isValid)
		{		
			if(setting.validateType=="AjaxValidator")
			{
				if(setting.lastValid=="")
				{
				    showclass = "onLoad";
				    showmsg = setting.onwait;
				}
				else
				{
				    showclass = "onError";
				    showmsg = setting.onerror;
				}
			}
			else
			{
				showmsg = setting.onerror;
				showclass = "onError";
			}
			if($.formValidator.getInitConfig(settings[0].validatorGroup).alertMessage)		
			{
				var elem = $("#"+id).get(0);
				if(elem.validoldvalue!=$(elem).val()) alert(showmsg);   
			}
			else
			{
				$.formValidator.SetTipState(settings[0].tipid,showclass,showmsg);
			}
		}
		else
		{		
			if(!$.formValidator.getInitConfig(setting.validatorGroup).alertMessage)
			{
				var showmsg = "";
				if ( $.formValidator.IsEmpty(id) ) 
					showmsg = setting.onempty;
				else
					showmsg = setting.oncorrect;
			    $.formValidator.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":
		        return srcjo.get(0).options.selectedIndex;
	    }
        
		return len;
    },
    
    IsEmpty : function(id)
    {
        if($("#"+id).get(0).settings[0].empty && $.formValidator.GetLength(id)==0)
            return true;
        else
            return false;
    },
    
    IsOneValid : function(id)
    {
	    return OneIsValid(id,1).isValid;
    },
    
	OneIsValid : function (id,index)
	{
		var returnObj = new Object();
		returnObj.id = id;
		returnObj.ajax = -1;
		returnObj.additional = false;
		var elem = $("#"+id).get(0);
	    var settings = elem.settings;
	    var settingslen = settings.length;
		returnObj.setting = settings[0];
		if($.formValidator.IsEmpty(id))
	    {
	        returnObj.isValid = true;
	    }
	    else
	    {
		    for ( var i = index ; i < settingslen ; i ++ )
		    {   
			    returnObj.setting = settings[i];
			    if(settings[i].validateType!="AjaxValidator") 
			        $.formValidator.triggerValidate(id,settings[i]);
			    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=="AjaxValidator") break;
			    }
		    }
		}
		if(returnObj.isValid && !returnObj.setting.onvalid($("#"+id).get(0),$("#"+id).val()))
		{
			settings[settings.length - 1].isValid = false;
			returnObj.isValid = false;
			returnObj.additional = true;
		}
		return returnObj;
	},

	PageIsValid : function (validatorGroup)
	{
	    if(validatorGroup == null || validatorGroup == undefined) validatorGroup = "1";
		var isValid = true;
		var thefirstid = "";
		var returnObj;
		var error_tip = "^"; 
		$("form").each(function(i,form1)
		{
			for(i=0;i<form1.elements.length;i++)  
			{
				elem = form1.elements[i];
				if ( elem.settings!=undefined && elem.settings!=null )
				{ 
					if(elem.settings[0].validatorGroup==validatorGroup)
					{
						if($.formValidator.getInitConfig(validatorGroup).alertMessage) 
						{
							if(isValid)
							{
								returnObj = $.formValidator.OneIsValid(elem.id,1);	
								if (!returnObj.isValid) {
									if(!returnObj.additional) $.formValidator.ShowMessage(returnObj);
									isValid = false;
									if(thefirstid=="") thefirstid = returnObj.id;
								}
							}
						}
						else
						{
							returnObj = $.formValidator.OneIsValid(elem.id,1);	
							if (!returnObj.isValid) {
								isValid = false;
								if (thefirstid == "") thefirstid = returnObj.id;
								if (error_tip.indexOf("^" + elem.settings[0].tipid + "^") == -1) {
									error_tip = error_tip + elem.settings[0].tipid + "^";
									if(!returnObj.additional) $.formValidator.ShowMessage(returnObj);
								}
							}
							else
							{
								if (error_tip.indexOf("^" + elem.settings[0].tipid + "^") == -1) {
									$.formValidator.ShowMessage(returnObj);
								}
							}
							
						}
					}
				}
			};
		});

		if(isValid)
		{
            isValid = $.formValidator.getInitConfig(validatorGroup).onSuccess();
			if($.formValidator.getInitConfig(validatorGroup).submitOnce){$("input[@type='submit']").attr("disabled",true);}
		}
		else
		{
			$.formValidator.getInitConfig(validatorGroup).onError();
			if(thefirstid!="") $("#"+thefirstid).focus();
		}
		return isValid;
	},

	AjaxValid : function(id, setting)
	{
	    var srcjo = $("#"+id);
		var ls_url = setting.url;
	    if (srcjo.size() == 0 && srcjo.get(0).settings[0].empty) {
			returnObj.setting = $("#"+id).get(0).settings[0];
			returnObj.isValid = true;
			$.formValidator.ShowMessage(returnObj);
			setting.isValid = true;
			return;
		}
		if(setting.addidvalue)
		{
			var parm = id+"="+escape(srcjo.val());
			ls_url = ls_url + ((ls_url).indexOf("?")>0?("&"+ parm) : ("?"+parm));
		}
		$.ajax(
		{	
			type : setting.type, 
			url : ls_url, 
			data : setting.data, 
			async : setting.async, 
			dataType : setting.datatype, 
			success : function(data){
			    setting0 = srcjo.get(0).settings[0];
			    if(setting.success(data))
			    {
			        $.formValidator.SetTipState(setting0.tipid,"onSuccess",setting0.oncorrect);
			        setting.isValid = true;
			    }
			    else
			    {
			        $.formValidator.SetTipState(setting0.tipid,"onError",setting.onerror);
			        setting.isValid = false;
			    }
			},
			complete : setting.complete, 
			beforeSend : function(){
				var isvalid = setting.beforesend();
				if(isvalid) setting.isValid = false;
				setting.lastValid = "-1";
				return setting.beforesend;
			}, 
			error : function(){
				setting0 = srcjo.get(0).settings[0];
			    $.formValidator.SetTipState(setting0.tipid,"onError",setting.onerror);
			    setting.isValid = false;
				setting.error();
			},
			processData : setting.processdata 
		});
	},

⌨️ 快捷键说明

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