input type이 number 경우 maxlength가 먹히지 않어 스크립트 제어가 필요해짐.

/* ********************************************************
 * 기타 class 이벤트 적용
 * vPoint12 : 정수 10자리 소수점 2자리 까지 입력되도록
 * vNum10 : 정수만 10자리 입력되도록
 ******************************************************** */
function fnEtcClassEvent(){
    $(".vPoint12").each(function(){
        // .(마침표)가 양끝에 있는 케이스를 처리
        $(this).off('blur').on('blur',function(e){
            var value = $(this).val();
            var regExp = /^\.|\.$/;
            if(regExp.test(this.value)){
                $(this).val(value.replace('.',''));
            }
        });
        
        // 소수점 둘째자리까지의 실수만 입력 허용
        $(this).off('input').on('input',function(e){
            var value = $(this).val();
            var regExp = /^\d{0,10}(\.\d{0,2})?$/;
            if(!regExp.test(this.value)){
                $(this).val(value.substring(0,value.length-1));
            }
        });
        
        // 숫자와 .(마침표)만 입력 허용
        $(this).off('keypress').on('keypress',function(e){
            e = e || window.event;
            var charCode = e.which || e.keyCode;
            if (!((charCode >= 48 && charCode <= 57) || charCode === 46)){
                return false;
            }
        });
    });
    
    $(".vNum10").each(function(){
        // 정수만 입력 허용
        $(this).off('input').on('input',function(e){
            var value = $(this).val();
            var regExp = /^\d{0,10}$/;
            if(!regExp.test(this.value)){
                $(this).val(value.substring(0,value.length-1));
            }
        });
        
        // 숫자만 입력 허용
        $(this).off('keypress').on('keypress',function(e){
            e = e || window.event;
            var charCode = e.which || e.keyCode;
            if (!((charCode >= 48 && charCode <= 57))){
                return false;
            }
        });
    });
}

반응형
/* ********************************************************
 * 기타 벨리데이션
 * vReq : 필수입력 체크(class)
 ******************************************************** */
function fnEtcValid(){
	var isPass = true;
	$.each($(".vReq"), function(idx, obj){
		if(obj.value == "" && isPass){
			var vId = obj.id;
			var vLabel = $("label[for='" + vId + "']").text() || $("#" + vId).attr("title");
			var vStr = vLabel == "" ? "" : "[ " + vLabel + " ] 항목은 ";
			isPass = false;
			alert(vStr + "필수입력 항목입니다.");
			obj.focus();
			return false;
		}
	});
	return isPass;
}
반응형
$(document).ready(function() {
    // validate 전화번호 형식 추가
    jQuery.validator.addMethod("phone", function(phone_number, element) {
        phone_number = phone_number.replace(/\s+/g, ""); 
        return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(01[016789]{1}|02|0[3-9]{1}[0-9]{1})-?[0-9]{3,4}-?[0-9]{4}$/);
    }, "잘못된 입력 형식입니다");
    
    // validate date 형식 추가
    jQuery.validator.addMethod("date", function(value, element) {
        return this.optional(element) || value.match(/^(19|20)?\d{2}[/., -](0?[1-9]|1[0-2])[/., -](0?[1-9]|[12][0-9]|3[0-1])$/);
    }, "잘못된 입력 형식입니다");
});
반응형

+ Recent posts