fix : validator.js 제거

main
이범준 2 years ago
parent 26e6d6abd6
commit 614e2d67b4

@ -14,7 +14,6 @@
<script type="text/javascript" src="${ctx}/resources/js/fims/biz/common/defaultUI.js" ></script>
<script type="text/javascript" src="${ctx}/resources/js/fims/biz/common/codeComboData.js"></script>
<%-- <script type="text/javascript" src="${ctx}/resources/js/fims/framework/cmmn/validator.js"></script> --%>
<script type="text/javascript" src="${ctx}/resources/3rd-party/tableExport/js/jspdf.min.js"></script>
<script type="text/javascript" src="${ctx}/resources/3rd-party/tableExport/js/html2canvas.min.js"></script>

@ -30,8 +30,7 @@
<script defer type="text/javascript" src="/resources/js/fims/framework/cmm/cmmDateUtil.js"></script>
<script defer type="text/javascript" src="/resources/js/fims/framework/cmm/cmmUtil.js"></script>
<script defer type="text/javascript" src="/resources/js/fims/biz/common/codeComboData.js"></script>
<!-- <script type="text/javascript" src="/resources/js/fims/framework/cmmn/validator.js"></script> -->
<script defer type="text/javascript" src="/resources/3rd-party/tableExport/js/jspdf.min.js"></script>
<script defer type="text/javascript" src="/resources/3rd-party/tableExport/js/html2canvas.min.js"></script>

@ -1,535 +0,0 @@
/***************************************************************************************************
* Daon Soft 검증
* Designed By xanadu (방기배)
* 사용방법 :
* HTML -
* 아래 예와 같이 속성명을 정의하고, Form Elements class 속성으로 사용한다.
* <input type="" name="" value="" class="속성1 속성2 속성3" />
* 예를 들어 반드시 입력해야 하며, 숫자만으로 되어있어야 하며, white space가 없어야 한다면,
* 아래와 같이 사용한다.
* <input type="" name="" value="" class="required validate-digits validate-white-space" />
*
* SCRIPT -
* 전체 적용
* if(Validator.validate(검증대상Form객체)){
* 문제가 없다면 수행할 코드....
* form.submit();
* }
*
* 항목씩 사용
* var message = Validator["validate-full-jumin"](str);
* // 오류가 있으면 메시지를 반환
* if(message) {
* alert(message);
* return false;
* }
***************************************************************************************************/
$(document).ready(function(){
/**
* ime-mode 설정
*/
$('.validate-digits').css("ime-mode","disabled"); //숫자만 입력 가능
$('.validate-digits-').css("ime-mode","disabled"); //숫자 및 하이픈(-)만 입력 가능
$('.validate-digits-dot').css("ime-mode","disabled"); //숫자 및 도트(.)만 입력 가능
$('.validate-digits-comma').css("ime-mode","disabled"); //숫자 및 콤마(.)만 입력 가능
$('.validate-digits-comma-dot').css("ime-mode","disabled"); //숫자 및 콤마(,),도트(.)만 입력 가능
$('.validate-amount').css("ime-mode","disabled"); //금액만 입력 가능(숫자 및 콤마(,),포인트(.))
$('.validate-id-format').css("ime-mode","disabled"); //아이디-영문으로 시작하고 영문(대소문자),숫자.,_만 입력 가능
$('.validate-nickname-format').css("ime-mode","active"); //닉네임-한글,영문(대,소),숫자만 입력 가능
$('.validate-alpha').css("ime-mode","disabled"); //영문으로 시작-알파뱃만 입력 가능
$('.validate-basic-char').css("ime-mode","disabled"); //영문,슛자,언더바(_)만 입력 가능
$('.validate-alpha-num').css("ime-mode","disabled"); //영문 및 숫자만 입력 가능
$('.validate-kr-digits').css("ime-mode","active"); //한글 및 숫자 조합만 입력 가능
$('.validate-date').css("ime-mode","disabled"); //날짜입력
$('.validate-email').css("ime-mode","disabled"); //유효한 이메일
$('.validate-url').css("ime-mode","disabled"); //유효한 url
$('.validate-front-jumin').css("ime-mode","disabled"); //주민번호 앞자리
$('.validate-back-jumin').css("ime-mode","disabled"); //주민번호 뒷자리
$('.validate-full-jumin').css("ime-mode","disabled"); //전체 주민번호
$('.validate-tel-num').css("ime-mode","disabled"); //전화번호
$('.validate-biz-num').css("ime-mode","disabled"); //사업자번호
$('.validate-ip').css("ime-mode","disabled"); //ip address
});
//*항목별 유효성검사 class 적용
// -필수입력 항목
// :required
// -날짜 항목
// :validate-date
// -금액 항목
// :validate-amount
// -이메일 항목
// :validate-email
// -숫자 입력 항목
// :validate-digits //숫자만 입력
// :validate-digits- //숫자 및 하이픈(-)만 입력 가능
// :validate-digits-comma //숫자 및 콤마(,)만 입력 가능
// :validate-digits-dot //숫자 및 도트(.)만 입력 가능
// :validate-digits-comma-dot //숫자 및 콤마(,),도트(.)만 입력 가능
/**
* text input에 사용자가 입력한 데이터 전체를 자동 validation 한다.
* validator.js를 참고해서 input태그의 class="속성1 속성2 속성3" 입력하면 자동체크됨.
* ) class="required validate-digits validate-white-space"
* 존재여부. 숫자만 입력됐는지 체크. 공백만 입력됐는지 체크. *validator.js에서 체크항목 확인
* @param obj (jquery object)
* @param value (jquery object value)
*/
function fn_setInputFormat_default(obj){
fn_setInputFormat(obj, obj.value);
}
function fn_setInputFormat(obj, value){
var classVal = $(obj).attr("class");
var classList = classVal.split(' ');
for(i=0;i<classList.length;i++){
var typeName = classList[i].trim();
//datepicker적용 input tag에서 발생하는 오류에 대한 처리
if("hasDatepicker"==typeName){
continue;
}
// var message = Validator[typeName](value);
var message = '';
try {
message = Validator[typeName](value);
} catch (e) {
console.log('"'+typeName+'"과 일치하는 유효성검사 타입이 없습니다.');
console.log(e);
continue;
}
if(typeName != "required")
if(message) {
alert(message);
setTimeout(function(){
obj.focus();
}, 0);
return false;
}
}
}
/**
* text input에 사용자가 입력한 데이터 전체를 자동 validation 한다.
* validator.js를 참고해서 input태그의 class="속성1 속성2 속성3" 입력하면 자동체크됨.
* ) class="required validate-digits validate-white-space"
* 존재여부. 숫자만 입력됐는지 체크. 공백만 입력됐는지 체크.
* @param frm (form Elements)
*/
function fn_isValidate(frm){
return Validator.validate(frm);
}
var Validator = {
validate : function(form) {
var elements = form.elements;
for(var i = 0; i <elements.length;i++) {
var el = elements[i];
var classes = el.className.split(" ");
for(var j = 0; j < classes.length; j++) {
// 각 클래스 명
var className = classes[j].replace(" ","");
var param;
/* className '_'()
* 사용하고 부분을 인자로 취하도록 한다.
*
* : validate-max-length_30
* : validate-max-length(x, y, 30) 맨뒤의 30 인자로 취해짐
*
* '_' 여러개 포함 경우 이후 값들은 배열로 전달된다.(배열은 길이 제한이 없음)
* : validate-limit-length_10_30
* : validate-limit-length(x, y, Array([10,30])) 10 30 배열로 넘겨짐
*/
if(className.indexOf("_") >= 0) {
var tmpArray = className.split("_");
className = tmpArray[0];
tmpArray.shift();
if(tmpArray == null || tmpArray.length == 0) {
param = "";
} else if(tmpArray.length == 1) {
param = tmpArray[0];
} else {
param = tmpArray;
}
}
// 클래스명과 일치하는 메서드가 있으면...
if(Validator[className]) {
var message = Validator[className](el.value,el,param);
// 오류가 있으면 메시지를 반환
if(message) {
Validator._handleError(message, el);
return false;
}
}
}
}
return true;
},
/**
* 오류 제어
* @param {String} message
* @param {HTMLFormElement} el
*/
_handleError : function(message, el) {
var title = Validator._getTitle(el);
if(title != "")
alert(title +"(은)는 " + message);
else
alert(message);
el.style.backgroundColor="#fdfde4";
el.focus();
},
_getTitle : function (el) {
if (el.title)
return el.title;
else
return "";
},
// 필수입력(or선택)
"required" : function(v,elm) {
switch (elm.tagName) {
case 'INPUT':
var type = elm.type;
if('checkbox'==type||'radio'==type){
return validCheckboxOrRadio(v,elm);
}
else
return validInput(v);
break;
case 'SELECT':
return validSelectbox(v, elm);
break;
default:
break;
}
//Input Tag
function validInput(v){
return !v ? "반드시 입력하셔야 합니다." : false;
}
//Checkbox or Radio Tag
function validCheckboxOrRadio(v,elm) {
var field_obj = document.getElementsByName(elm.name);
// var field_obj = elm;
if (field_obj.length > 1) {
for (var idx = 0; idx < field_obj.length; idx++) {
if (field_obj[idx].checked) return false;
}
} else {
if (field_obj.checked) return false;
}
return "항목을 선택하셔야 합니다.";
}
//Selectbox Tag
function validSelectbox(v, elm) {
var field_obj = document.getElementById(elm.name);
// var field_obj = elm;
if(field_obj.options[field_obj.selectedIndex].value != "")
return false;
return "항목을 선택하셔야 합니다.";
}
},
// white space 없이 입력
"validate-white-space" : function(v) {
return /\s+/.test(v) ? "공백없이 입력되야 합니다." : false;
},
// 숫자만 입력
"validate-digits" : function(v) {
return isNaN(v) || /[^\d]/.test(v)? "숫자만 입력하셔야 합니다." : false;
},
// 숫자와 하이픈(-)만 입력
"validate-digits-" : function(v) {
v = v.replace(/-/g, "");
return isNaN(v) || /[^\d]/.test(v)? "숫자, 하이픈(-)만 입력하셔야 합니다." : false;
},
// 숫자와 포인트(.)만 입력
"validate-digits-dot" : function(v) {
v = v.replace(/\./g, "");
return isNaN(v) || /[^\d]/.test(v)? "숫자, 포인트(.)만 입력하셔야 합니다." : false;
},
// 숫자와 콤마(,)만 입력
"validate-digits-comma" : function(v) {
v = v.replace(/\,/g, "");
return isNaN(v) || /[^\d]/.test(v)? "숫자, 콤마(,)만 입력하셔야 합니다." : false;
},
// 숫자와 콤마(,),포인트(.)만 입력
"validate-digits-comma-dot" : function(v) {
v = v.replace(/\,\./g, "");
return isNaN(v) || /[^\d]/.test(v)? "숫자, 콤마(,),포인트(.)만 입력하셔야 합니다." : false;
},
// 금액만 입력 가능(validate-digits-comma와 동일, 세자리콤마 자동추가 이벤트리스너 적용을 위해 추가 함)
"validate-amount" : function(v) {
v = v.replace(/\,/g, "");
return isNaN(v) || /[^\d]/.test(v)? "숫자, 콤마(,)만 입력하셔야 합니다." : false;
},
// 아이디 형태 영문으로 시작하고 영문, 숫자, ., _ 를 사용
"validate-id-format" : function(v){
var ptrn1 = /^[^a-zA-Z]/; //false가 정상
var ptrn2 = /[^a-zA-Z0-9._]/; //false가 정상 +
return (ptrn1.test(v) || ptrn2.test(v)) ? "영문으로시작하고 영문(대소문자), 숫자, ., _ 만 입력 가능합니다." : false;
},
// 닉네임
"validate-nickname-format" : function(v){
var ptrn = /[^(가-힣a-zA-Z0-9)]/;
return (ptrn.test(v)) ? "한글, 영문(대,소), 숫자만 입력 가능합니다." : false;
},
// 닉네임 + 스페이스 추가
"validate-nickname-space-format" : function(v){
var ptrn = /[^(가-힣a-zA-Z0-9\s+)]/;
return (ptrn.test(v)) ? "한글, 영문(대,소), 숫자, 공백만 입력 가능합니다." : false;
},
// 차대번호
"validate-vin-format" : function(v){
var ptrn = /[^(A-Z0-9)]/;
return (ptrn.test(v)) ? "영문(대문자), 숫자만 입력 가능합니다." : false;
},
// 영문으로 시작 입력
"validate-alpha" : function(v) {
return /[^a-zA-Z]+$/.test(v) ? "알파뱃으로 시작되도록 입력하셔야 합니다." : false;
},
// 영문, 숫자, _(언더바) 만 입력
"validate-basic-char" : function(v) {
return !/[a-zA-Z0-9_]/.test(v) ? "알파뱃, 숫자, 언더바(_)만 입력하셔야 합니다." : false;
},
// 영문과 숫자만 입력
"validate-alpha-num" : function(v) {
return /\W/.test(v) ? "알파뱃과 숫자만 입력하셔야 합니다." : false;
},
// 한글+ 숫자 조합만 입력
"validate-kr-digits" : function(v){
var ptrnKr = /[(가-힣)]/;
var ptrnDigits = /[(0-9)]/;
return (ptrnKr.test(v) && ptrnDigits.test(v)) ? false : "한글 + 숫자만 입력 가능합니다.";
},
// 날자 사용가능한 숫자 입력
"validate-date" : function(v) {
if("" != v){
var date = new Date(v);
return (isNaN(date.getFullYear()) || isNaN(date.getMonth()) || isNaN(date.getDate()) ) ? "올바른 날짜를 입력하셔야 합니다.(예 2001-01-01)" : false;
}
},
// 유효한 email 입력
"validate-email" : function(v) {
if(v == "") return false;
return !/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v) ? "바른 이메일 주소를 입력하셔야 합니다." : false;
},
// 유효한 URL 입력
"validate-url" : function(v) {
if(v) {
return !/^(http|https|ftp):\/\/(([a-zA-Z0-9][a-zA-Z0-9_-]*)(\.[a-zA-Z0-9][a-zA-Z0-9_-]*)?)(:(\d+))?\/?/i.test(v) ? "http://또는https://를 포함한 바른 URL을 입력하셔야 합니다." : false;
}
return false;
},
// 유효한 주민번호 앞자리 검증
"validate-front-jumin" : function(v) {
if (/[^\d]/.test(v) || v.length !=6 || isNaN(v)) {
return "숫자 6자리여야 합니다.";
}
return false ;
},
// 유요한 주민번호 뒷자리 검증
"validate-back-jumin" : function(v) {
var check_digit2;
if (/[^\d]/.test(v) || v.length!=7 || isNaN(v)) {
return "숫자 7자리여야 합니다.";
}
return false;
},
// 유효한 전체 주민번호 검증
"validate-full-jumin" : function(v) {
val = v.replace(/-/g, "");
pin1 = val.substring(0,6);
pin2 = val.substring(6,13);
if (pin1.length!=6 || isNaN(pin1)) {
return " 앞자리는 6자리 숫자여야 합니다.";
}
var a1=pin1.substring(0,1)
var a2=pin1.substring(1,2)
var a3=pin1.substring(2,3)
var a4=pin1.substring(3,4)
var a5=pin1.substring(4,5)
var a6=pin1.substring(5,6)
check_digit1 = a1*2 + a2*3 + a3*4 + a4*5 + a5*6 + a6*7;
if (pin2.length!=7 || isNaN(pin2)) {
return " 뒷자리는 7자리 숫자여야 합니다.";
}
var b1=pin2.substring(0,1)
var b2=pin2.substring(1,2)
var b3=pin2.substring(2,3)
var b4=pin2.substring(3,4)
var b5=pin2.substring(4,5)
var b6=pin2.substring(5,6)
var b7=pin2.substring(6,7)
check_digit2 = check_digit1 + b1*8 + b2*9 + b3*2 + b4*3 + b5*4 + b6*5;
check_digit2 = check_digit2 % 11
check_digit2 = 11 - check_digit2
check_digit2 = check_digit2 % 10
if (check_digit2 != b7){
return "유효하지 않는 주민등록번호입니다.";
}
return false;
},
// BYTE 단위로 최대 글자수를 제한
"validate-max-length" : function(v, elm, length) {
var maxSize = parseInt(length, 10);
var len = 0;
var str = v.substring(0);
if(str == null) return "길이를 확인할 값이 없습니다.";
for(var i=0; i<str.length; i++) {
var ch = escape(str.charAt(i));
if(ch.length == 1) len++;
else if(ch.indexOf("%u") != -1) len += 3;
else if(ch.indexOf("%") != -1) len += ch.length/3;
}
if(maxSize < len) {
return "최대 "+maxSize+" byte 까지 입력 가능합니다.";
}
return false;
},
// BYTE 단위로 최소 글자수를 제한
"validate-min-length" : function(v, elm, length) {
var minSize = parseInt(length, 10);
var len = 0;
var str = v.substring(0);
if(str == null) return "길이를 확인 할 값이 없습니다.";
for(var i=0; i<str.length; i++) {
var ch = escape(str.charAt(i));
if(ch.length == 1) len++;
else if(ch.indexOf("%u") != -1) len += 3;
else if(ch.indexOf("%") != -1) len += ch.length/3;
}
if(minSize > len) {
return "최소 "+minSize+" byte 를 입력 해야 합니다.";
}
return false;
},
// BYTE 단위로 범위내의 글자수를 체크
"validate-limit-length" : function(v, elm, param) {
if(param.length == 2) {
var minSize = parseInt(param[0], 10);
var maxSize = parseInt(param[1], 10);
var len = 0;
var str = v.substring(0);
if(str == null) return "길이를 확인 할 값이 없습니다.";
for(var i=0; i<str.length; i++) {
var ch = escape(str.charAt(i));
if(ch.length == 1) len++;
else if(ch.indexOf("%u") != -1) len += 3;
else if(ch.indexOf("%") != -1) len += ch.length/3;
}
if(minSize > len || maxSize < len) {
//return "최소 "+minSize+" byte 보다 같거나 크고, "+maxSize+" 보다 같거나 작아야 합니다.";
return "최소 "+minSize+"자 이상, "+maxSize+"자 이하여야 합니다.";
}
} else {
return "최소 값과 최대 값 두개의 배열 인자가 필요합니다.";
}
return false;
},
// 전화번호 유효성 체크 02-222-2222 형식 '-' 토큰으로 잘라서 검증함
"validate-tel-num" : function(v, elm, param) {
if(v) {
val = v.replace(/-/g, "");
if(isNaN(val)) {
return "숫자, - 만 입력하셔야 합니다.";
}
var tmpArray = v.split("-");
if(tmpArray.length != 3) {
return "-를 포함하여 정확히 입력하셔야 합니다.";
}
for(i = 0; i < tmpArray.length; i++ ) {
if(tmpArray[i] == "") return "정확히 입력하셔야 합니다.";
if(tmpArray[i].length <2 || tmpArray[i].size >4) return "정확히 입력하셔야 합니다.";
}
}
return false;
},
// 사업자번호 유효성 체크 000-00-00000 형식 '-' 토큰으로 잘라서 검증함
"validate-biz-num" : function(v, elm, param) {
if(v) {
val = v.replace(/-/g, "");
if(isNaN(val)) {
return "숫자, - 만 입력하셔야 합니다.";
}
var tmpArray = v.split("-");
if(tmpArray.length != 3) {
return "-를 포함하여 정확히 입력하셔야 합니다.";
}
for(i = 0; i < tmpArray.length; i++ ) {
if(tmpArray[i] == "") return "정확히 입력하셔야 합니다.";
if(tmpArray[i].length <2 || tmpArray[i].size >5) return "정확히 입력하셔야 합니다.";
}
}
return false;
},
// 웹상에서 사용가능한 이미지 파일 종류인지 확인한다. gif, jpg, png 만 인정함
"validate-is-image" : function(v) {
if(v) {
var ext = "";
if(v.indexOf(".") >= 0) {
ext = v.substring(v.lastIndexOf(".")+1);
ext = ext.toLowerCase();
if(ext.length != 3 || !(ext == "gif" || ext == "jpg" || ext == "jpeg" || ext == "png" || ext == "bmp"))
return "파일은 gif, jpg, png 파일만 등록을 하실수 있습니다.";
} else {
return "파일의 확장자가 없습니다.";
}
}
return false;
},
"validate-ip" :function(v){
if(v){
var ip4Ptrn = /^((25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){2,3}[,]?)+$/;
if(!ip4Ptrn.test(v)){
return "아이피 형식이 아닙니다. x.x.x 또는 x.x.x.x 형식으로 입력해주세요.";
}
}
return false;
}
}
Loading…
Cancel
Save