2013년 7월 8일 월요일

Validator 모듈



var Validator = {
		
		validateElement : function(formName, elName) {
			
			var el = $("form[name="+formName+"] *[name="+elName+"]");			
				
			var classGroup = el.attr("class");	
				
			if(classGroup) {
						
				var classes = classGroup.split(" ");
				var comment = el.attr("comment");
				
				for(var i=0 ; i< classes.length ; i++) {
					
					var className = classes[i];
					
					if(Validator[className]) {					
						
						var msg = Validator[className](el.val());
						
						if(msg) {	
							
							Validator._handleError(msg, comment);	
							return false;
								
						}							
					}
				}
			}
			
			return true;				
		},
		
		validateForm : function(formName) {
			
			var result = true;
			
			$("form[name="+formName+"] *").each(function() {				
				
				var classGroup = $(this).attr("class");	
				
				if(classGroup) {
						
					var classes = classGroup.split(" ");
					var comment = $(this).attr("comment");
					
					for(var i=0 ; i < classes.length ; i++) {
						
						var className = classes[i];
						
						if(Validator[className]) {					
							
							var msg = Validator[className]($(this).val());
							
							if(msg) {	
								
								Validator._handleError(msg, comment);
								result = false;
								return false;
								
							}
							 
						}
						
					}
				}
			});
			
			return result;			
		},
		
		_handleError : function(msg, comment) {
			
			alert(comment+" 는(은) "+msg);
			
		},
		
		trim : function(str)
		{
			var count = str.length;
			var len = count;
			var st = 0;

			while ((st < len) && (str.charAt(st) <= ' '))
			{
				st++;
			}
			while ((st < len) && (str.charAt(len - 1) <= ' '))
			{
				len--;
			}
			return ((st > 0) || (len < count)) ? str.substring(st, len) : str ;
		},
		
		"required" : function(value) {
			
			if(!Validator.trim(value).length) {
				
				return "필수 입력 사항입니다";
				
			}			
		},
		
		"alpha-lower" : function(value) {			
			
			var pattern = new RegExp("^[a-z]{6,18}$");			
			
			if(!pattern.exec(Validator.trim(value))) {
				
				return "소문자만 입력 가능합니다 (6~18 글자)";
				
			}			
		},
		
		"alpha-upper" : function(value) {
			
			var pattern = new RegExp("^[A-Z]{6,18}$");			
			
			if(!pattern.exec(Validator.trim(value))) {
				
				return "대문자만 입력 가능합니다 (6~18 글자)";
				
			}			
		},
		
		"email" : function(value) {
			
			var pattern = new RegExp("^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$");
			
			if(!pattern.exec(Validator.trim(value))) {
				
				return "이메일 형식에 맞지 않습니다";
			}
		},
		
		"mobile" : function(value) {
			
			var pattern = new RegExp("^01([0-9])-([0-9]{3,4})-([0-9]{4,4})$");
			
			if(!pattern.exec(Validator.trim(value))) {
				
				return "핸드폰 번호 형식에 맞지 않습니다";
			}				
		}
};






유효성 검사 모듈.. 
사용법은 유효성검사가 필요한 엘리먼트에 class 추가 후
script 에서 validateForm 또는 validateElement 호출하면 된다.

댓글 없음:

댓글 쓰기