/**
***************************************************************************
프로그램 정보
***************************************************************************
* Title : Es폼체크
* File : ESvalidator.js
* Date : 2010-10-01
* Update History :
* Author :
- 수리도랑
* E-Mail :
- impactlife@naver.com
* Summary :
jquery 필요함 - 테스트환경 jquery-1.3.2
< 지원 태그목록 >
label : string [캡션],
required : true|false,
memberid : true|false,
minlength : int,
eqaul : string [target element name],
hangul : true|false [완성형한글],
hangul2 : true|false [조합형한글 : 자음모음만 있는것도 가능],
email : string [이메일],
phonenumber : string [전화번호 : 111-1111-1111 형식]
groupcheck : true|false [radio, checkbox 에서 하나이상 필수 입력이 요구될때],
jumin : true|false [주민번호 : '-' 포함도 가능]
taxno : true|false [사업자번호 : '-' 포함도 가능]
zipcode : true|false [우편번호 : 111-111 형식]
uniq : string [이미 존재하는 값인지 체크 : ajax 로 호출할 url,
ajax 호출결과는 문자열 'true'(사용해도됨) 또는 'false'(사용할 수 없음)여야 함]
* Example :
****************************************************************************
**/
(function($){
$.validator = function() {
this.form = null;
this.error = {result:false,type:'alert',msg:null}
};
$.extend($.validator, {
//===========================================================================
// Prototype
//===========================================================================
prototype:{
validCheck:function(f){
this.form = f;
var validator = this;
var ele = f.elements;
for(var i=0;i" + this.error.msg + "");
$(ele).focus();
}else{
alert(this.error.msg);
$(ele).focus();
}
this.initError();
},
initError:function(){
this.error.result = false;
this.error.type = 'alert';
this.error.msg = null;
},
valRequired:function(ele, o){
if(!o.required) return;
if($(ele).attr('type')=='checkbox' || $(ele).attr('type')=='radio'){
if(!ele.checked){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 필수 체크 항목입니다';
}
}else if($(ele).attr('type')=='textarea'){
if($(ele).attr('name') == 'b_content'){
oEditors.getById["b_content"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('b_content').value);
}
if($(ele).attr('name') == 'bcm_comment'){
oEditors.getById["bcm_comment"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('bcm_comment').value);
}
if($(ele).attr('name') == 'h_content'){
oEditors.getById["h_content"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('h_content').value);
}
if($(ele).attr('name') == 'e_content'){
oEditors.getById["e_content"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('e_content').value);
}
if($(ele).attr('name') == 'p_content'){
oEditors.getById["p_content"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('p_content').value);
}
if($(ele).attr('name') == 'p_features'){
oEditors1.getById["p_features"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('p_features').value);
}
if($(ele).attr('name') == 'p_components'){
oEditors2.getById["p_components"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('p_components').value);
}
if($(ele).attr('name') == 'p_procedure'){
oEditors3.getById["p_procedure"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('p_procedure').value);
}
if($(ele).attr('name') == 'p_features_list_info'){
oEditors4.getById["p_features"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('p_features_list_info').value);
}
if($(ele).attr('name') == 'p_components_list_info'){
oEditors5.getById["p_components"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('p_components_list_info').value);
}
if($(ele).attr('name') == 'p_procedure_list_info'){
oEditors6.getById["p_procedure"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('p_procedure_list_info').value);
}
if($(ele).attr('name') == 'ps_content'){
oEditors.getById["ps_content"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('ps_content').value);
}
if($(ele).val()==''){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 필수 항목입니다';
}
else if($(ele).val()=='
'){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 필수 항목입니다';
}
}else if ($(ele).attr('type')=='select-multiple'){
if($(ele).val()==null){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 필수 항목입니다';
}
}else{
if($(ele).attr('name') == 'b_content'){
oEditors.getById["b_content"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('b_content').value);
}
if($(ele).attr('name') == 'e_content'){
oEditors.getById["e_content"].exec("UPDATE_CONTENTS_FIELD", []);
$(ele).val(document.getElementById('e_content').value);
}
if($(ele).val()==''){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 필수 항목입니다';
}
}
},
valEqual:function(ele, o){
if($(ele).val() != $(this.form[o.equal]).val()){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 값이 일치하지 않습니다';
}
},
valMinlength:function(ele, o){
if ($(ele).val().length < o.minlength){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 최소 ' + o.minlength + '자 이상 입력하세요.';
}
},
valEmail:function(ele, o){
var pattern = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/;
if (!pattern.test($(ele).val())){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 잘못된 이메일로 추정됩니다.';
}
},
valHangul:function(ele, o){
var pattern = /[^가-힣]/;
if(pattern.test($(ele).val())){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 한글만 입력 가능합니다';
}
},
valHangul2:function(ele, o){
var pattern = /[^가-힣ㄱ-ㅎㅏ-ㅣ]/;
if(pattern.test($(ele).val())){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 한글만 입력 가능합니다';
}
},
valMemberid:function(ele, o){
var pattern = /^[^a-z0-9]|[^a-z0-9_]/;
if (pattern.test($(ele).val())){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label +
'] 회원아이디 형식이 아닙니다\n\n' +
'(알파벳소문자, 숫자, \'_\' 만 가능합니다. 첫글자 영문자,숫자)';
}
},
valNospace:function(ele, o){
var pattern = /(\s)/g;
if(pattern.test($(ele).val())){
this.error.result = true;
this.error.msg = '[' + o.label + '] 공백문자는 입력할 수 없습니다';
}
},
valNumeric:function(ele, o){
if(!o.numeric) return;
var pattern = /[^0-9]/;
if(pattern.test($(ele).val())){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 숫자만 입력할 수 있습니다';
}
// var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
// if(!pattern.test($(ele).val())){
// this.error.result = true;
// this.error.type = 'alert';
// this.error.msg = '[' + o.label + '] 숫자만 입력할 수 있습니다';
// }
},
valAlpha:function(ele, o){
var pattern = /[^a-z]/i;
if(pattern.test($(ele).val())){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 영문자만 입력할 수 있습니다';
}
},
valAlphanumeric:function(ele, o){
var pattern = /[^a-z0-9]/i;
if(pattern.test($(ele).val())){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 영문자와 숫자만 입력할 수 있습니다';
}
},
valAlphanumeric_:function(ele, o){
var pattern = /[^a-z0-9_]/i;
if(pattern.test($(ele).val())){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 영문자, 숫자, \'-\' 만 입력할 수 있습니다';
}
},
valPhonenumber:function(ele, o){
if(!o.phonenumber) return;
var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
if(!pattern.test($(ele).val())){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 잘못된 번호 같습니다';
}
// var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
// var pattern = /^[0-9]{10,11}$/;
// if(!pattern.test($(ele).val())){
// this.error.result = true;
// this.error.type = 'alert';
// this.error.msg = '[' + o.label + '] 잘못된 번호 같습니다';
// }
},
valHangulalphanumeric:function(ele, o){
var pattern = /[^가-힣a-z0-9]/i;
if(pattern.test($(ele).val())){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 한글, 영문, 숫자만 입력할 수 있습니다';
}
},
// 주민등록번호 검사 (그누보드에 있던거 약간 수정)
valJumin:function(ele, o){
var value = $(ele).val().replace(/[^\d]/g, '');
var pattern = /\d{13}/;
if (!pattern.test(value)) {
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 주민번호 13자리를 입력해 주세요';
}else{
var sum_1 = 0;
var sum_2 = 0;
var at=0;
var juminno = value;
sum_1 = (juminno.charAt(0)*2)+
(juminno.charAt(1)*3)+
(juminno.charAt(2)*4)+
(juminno.charAt(3)*5)+
(juminno.charAt(4)*6)+
(juminno.charAt(5)*7)+
(juminno.charAt(6)*8)+
(juminno.charAt(7)*9)+
(juminno.charAt(8)*2)+
(juminno.charAt(9)*3)+
(juminno.charAt(10)*4)+
(juminno.charAt(11)*5);
sum_2=sum_1 % 11;
if (sum_2 == 0)
at = 10;
else
{
if (sum_2 == 1) at = 11;
else at = sum_2;
}
att = 11 - at;
if (juminno.charAt(12) != att ||
juminno.substr(2,2) < '01' ||
juminno.substr(2,2) > '12' ||
juminno.substr(4,2) < '01' ||
juminno.substr(4,2) > '31' ||
juminno.charAt(6) > 4){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 올바른 주민등록번호가 아닙니다';
}
}
},
//긁어 왔는데 누구님껀지 기억이 안남 ㅜㅜ
valTaxno:function(ele, o){
var value = $(ele).val().replace(/[^\d]/g, '');
var sum = 0;
var getlist = new Array(10);
var chkvalue = new Array('1','3','7','1','3','7','1','3','5');
for(var i=0; i<10; i++) { getlist[i] = value.substring(i, i+1); }
for(var i=0; i<9; i++) { sum += getlist[i]*chkvalue[i]; }
sum = sum + parseInt((getlist[8]*5)/10);
sidliy = sum % 10;
sidchk = 0;
if(sidliy != 0) { sidchk = 10 - sidliy; }
else { sidchk = 0; }
if(sidchk != getlist[9]){
this.error.result = true;
this.error.type = 'alert';
this.error.msg = '[' + o.label + '] 잘못된 사업자등록번호입니다';
}
},
valGroupcheck:function(ele, o){
var flag = false;
ele = document.getElementsByName(ele.name);
for(i=0;i