가장 유연한 폼메일 검사기 js 정보
일반 가장 유연한 폼메일 검사기 js본문
어디서 퍼 담은 것 같은데...ㅎㅎ
유용합니다. 중복이면 삭제를..........
/*********************************************
* 파일명: lib.validate.js
* 기능: 유연한 자동 폼 검사기
* 만든이: 거친마루 <*** 개인정보보호를 위한 이메일주소 노출방지 ***>
* 날짜: 2002-10-01
**********************************************/
/// 에러메시지 포멧 정의 ///
var NO_BLANK = "{name+은는} 필수항목입니다";
var NOT_VALID = "{name+이가} 올바르지 않습니다";
var TOO_LONG = "{name}의 길이가 초과되었습니다 (최대 {maxbyte}바이트)";
/// 스트링 객체에 메소드 추가 ///
String.prototype.trim = function(str) {
str = this != window ? this : str;
return str.replace(/^\s+/g,'').replace(/\s+$/g,'');
}
String.prototype.hasFinalConsonant = function(str) {
str = this != window ? this : str;
var strTemp = str.substr(str.length-1);
return ((strTemp.charCodeAt(0)-16)%28!=0);
}
function josa(str,tail) {
return (str.hasFinalConsonant()) ? tail.substring(0,1) : tail.substring(1,2);
}
function validate(form) {
for (i = 0; i < form.elements.length; i++ ) {
var el = form.elements[i];
el.value = el.value.trim();
if (el.getAttribute("REQUIRED") != null) {
if (el.value == null || el.value == "") {
return doError(el,NO_BLANK);
}
}
if (el.getAttribute("MAXBYTE") != null && el.value != "") {
var len = 0;
for(j=0; j<el.value.length; j++) {
var str = el.value.charAt(j);
len += (str.charCodeAt() > 128) ? 2 : 1
}
if (len > parseInt(el.getAttribute("MAXBYTE"))) {
var maxbyte = el.getAttribute("MAXBYTE");
return doError(el,"{name}의 길이가 초과되었습니다 (최대 "+maxbyte+"바이트)";);
}
}
if (el.getAttribute("OPTION") != null && el.value != "") {
if (!funcs[el.getAttribute("OPTION")](el)) return false;
}
}
return true;
}
function doError(el,type,action) {
var pattern = /{([a-zA-Z0-9_]+)\+?([가-힣]{2})?}/;
var name = (hname = el.getAttribute("HNAME")) ? hname : el.getAttribute("NAME");
pattern.exec(type);
var tail = (RegExp.$2) ? josa(eval(RegExp.$1),RegExp.$2) : "";
alert(type.replace(pattern,eval(RegExp.$1) + tail));
if (action == "sel") {
el.select();
} else if (action == "del") {
el.value = "";
}
el.focus();
return false;
}
/// 특수 패턴 검사 함수 매핑 ///
var funcs = new Array();
funcs['email'] = isValidEmail;
funcs['phone'] = isValidPhone;
funcs['userid'] = isValidUserid;
funcs['hangul'] = hasHangul;
funcs['number'] = isNumeric;
funcs['engonly'] = alphaOnly;
funcs['jumin'] = isValidJumin;
funcs['bizno'] = isValidBizNo;
/// 패턴 검사 함수들 ///
function isValidEmail(el) {
var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
return (pattern.test(el.value)) ? true : doError(el,NOT_VALID);
}
function isValidUserid(el) {
var pattern = /^[a-zA-Z]{1}[a-zA-Z0-9_]{4,11}$/;
return (pattern.test(el.value)) ? true : doError(el,"{name+은는} 5자이상 12자 미만이어야 하고,\n 영문,숫자, _ 문자만 사용할 수 있습니다");
}
function hasHangul(el) {
var pattern = /[가-힣]/;
return (pattern.test(el.value)) ? true : doError(el,"{name+은는} 반드시 한글을 포함해야 합니다");
}
function alphaOnly(el) {
var pattern = /^[a-zA-Z]+$/;
return (pattern.test(el.value)) ? true : doError(el,NOT_VALID);
}
function isNumeric(el) {
var pattern = /^[0-9]+$/;
return (pattern.test(el.value)) ? true : doError(el,"{name+은는} 반드시 숫자로만 입력해야 합니다");
}
function isValidJumin(el) {
var pattern = /^([0-9]{6})-?([0-9]{7})$/;
var num = el.value;
if (!pattern.test(num)) return doError(el,NOT_VALID);
num = RegExp.$1 + RegExp.$2;
var sum = 0;
var last = num.charCodeAt(12) - 0x30;
var bases = "234567892345";
for (var i=0; i<12; i++) {
if (isNaN(num.substring(i,i+1))) return doError(el,NOT_VALID);
sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
}
var mod = sum % 11;
return ((11 - mod) % 10 == last) ? true : doError(el,NOT_VALID);
}
function isValidBizNo(el) {
var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
var num = el.value;
if (!pattern.test(num)) return doError(el,NOT_VALID);
num = RegExp.$1 + RegExp.$2 + RegExp.$3;
var cVal = 0;
for (var i=0; i<8; i++) {
var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp == 1 ) ? 3 : 7);
cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10;
}
var li_temp = parseFloat(num.substring(i,i+1)) * 5 + '0';
cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2));
return (parseInt(num.substring(9,10)) == 10-(cVal % 10)%10) ? true : doError(el,NOT_VALID);
}
function isValidPhone(el) {
var pattern = /^([0]{1}[0-9]{1,2})-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
if (pattern.exec(el.value)) {
if(RegExp.$1 == "011" || RegExp.$1 == "016" || RegExp.$1 == "017" || RegExp.$1 == "018" || RegExp.$1 == "019") {
el.value = RegExp.$1 + "-" + RegExp.$2 + "-" + RegExp.$3;
}
return true;
} else {
return doError(el,NOT_VALID);
}
}
유용합니다. 중복이면 삭제를..........
/*********************************************
* 파일명: lib.validate.js
* 기능: 유연한 자동 폼 검사기
* 만든이: 거친마루 <*** 개인정보보호를 위한 이메일주소 노출방지 ***>
* 날짜: 2002-10-01
**********************************************/
/// 에러메시지 포멧 정의 ///
var NO_BLANK = "{name+은는} 필수항목입니다";
var NOT_VALID = "{name+이가} 올바르지 않습니다";
var TOO_LONG = "{name}의 길이가 초과되었습니다 (최대 {maxbyte}바이트)";
/// 스트링 객체에 메소드 추가 ///
String.prototype.trim = function(str) {
str = this != window ? this : str;
return str.replace(/^\s+/g,'').replace(/\s+$/g,'');
}
String.prototype.hasFinalConsonant = function(str) {
str = this != window ? this : str;
var strTemp = str.substr(str.length-1);
return ((strTemp.charCodeAt(0)-16)%28!=0);
}
function josa(str,tail) {
return (str.hasFinalConsonant()) ? tail.substring(0,1) : tail.substring(1,2);
}
function validate(form) {
for (i = 0; i < form.elements.length; i++ ) {
var el = form.elements[i];
el.value = el.value.trim();
if (el.getAttribute("REQUIRED") != null) {
if (el.value == null || el.value == "") {
return doError(el,NO_BLANK);
}
}
if (el.getAttribute("MAXBYTE") != null && el.value != "") {
var len = 0;
for(j=0; j<el.value.length; j++) {
var str = el.value.charAt(j);
len += (str.charCodeAt() > 128) ? 2 : 1
}
if (len > parseInt(el.getAttribute("MAXBYTE"))) {
var maxbyte = el.getAttribute("MAXBYTE");
return doError(el,"{name}의 길이가 초과되었습니다 (최대 "+maxbyte+"바이트)";);
}
}
if (el.getAttribute("OPTION") != null && el.value != "") {
if (!funcs[el.getAttribute("OPTION")](el)) return false;
}
}
return true;
}
function doError(el,type,action) {
var pattern = /{([a-zA-Z0-9_]+)\+?([가-힣]{2})?}/;
var name = (hname = el.getAttribute("HNAME")) ? hname : el.getAttribute("NAME");
pattern.exec(type);
var tail = (RegExp.$2) ? josa(eval(RegExp.$1),RegExp.$2) : "";
alert(type.replace(pattern,eval(RegExp.$1) + tail));
if (action == "sel") {
el.select();
} else if (action == "del") {
el.value = "";
}
el.focus();
return false;
}
/// 특수 패턴 검사 함수 매핑 ///
var funcs = new Array();
funcs['email'] = isValidEmail;
funcs['phone'] = isValidPhone;
funcs['userid'] = isValidUserid;
funcs['hangul'] = hasHangul;
funcs['number'] = isNumeric;
funcs['engonly'] = alphaOnly;
funcs['jumin'] = isValidJumin;
funcs['bizno'] = isValidBizNo;
/// 패턴 검사 함수들 ///
function isValidEmail(el) {
var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
return (pattern.test(el.value)) ? true : doError(el,NOT_VALID);
}
function isValidUserid(el) {
var pattern = /^[a-zA-Z]{1}[a-zA-Z0-9_]{4,11}$/;
return (pattern.test(el.value)) ? true : doError(el,"{name+은는} 5자이상 12자 미만이어야 하고,\n 영문,숫자, _ 문자만 사용할 수 있습니다");
}
function hasHangul(el) {
var pattern = /[가-힣]/;
return (pattern.test(el.value)) ? true : doError(el,"{name+은는} 반드시 한글을 포함해야 합니다");
}
function alphaOnly(el) {
var pattern = /^[a-zA-Z]+$/;
return (pattern.test(el.value)) ? true : doError(el,NOT_VALID);
}
function isNumeric(el) {
var pattern = /^[0-9]+$/;
return (pattern.test(el.value)) ? true : doError(el,"{name+은는} 반드시 숫자로만 입력해야 합니다");
}
function isValidJumin(el) {
var pattern = /^([0-9]{6})-?([0-9]{7})$/;
var num = el.value;
if (!pattern.test(num)) return doError(el,NOT_VALID);
num = RegExp.$1 + RegExp.$2;
var sum = 0;
var last = num.charCodeAt(12) - 0x30;
var bases = "234567892345";
for (var i=0; i<12; i++) {
if (isNaN(num.substring(i,i+1))) return doError(el,NOT_VALID);
sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
}
var mod = sum % 11;
return ((11 - mod) % 10 == last) ? true : doError(el,NOT_VALID);
}
function isValidBizNo(el) {
var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
var num = el.value;
if (!pattern.test(num)) return doError(el,NOT_VALID);
num = RegExp.$1 + RegExp.$2 + RegExp.$3;
var cVal = 0;
for (var i=0; i<8; i++) {
var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp == 1 ) ? 3 : 7);
cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10;
}
var li_temp = parseFloat(num.substring(i,i+1)) * 5 + '0';
cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2));
return (parseInt(num.substring(9,10)) == 10-(cVal % 10)%10) ? true : doError(el,NOT_VALID);
}
function isValidPhone(el) {
var pattern = /^([0]{1}[0-9]{1,2})-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
if (pattern.exec(el.value)) {
if(RegExp.$1 == "011" || RegExp.$1 == "016" || RegExp.$1 == "017" || RegExp.$1 == "018" || RegExp.$1 == "019") {
el.value = RegExp.$1 + "-" + RegExp.$2 + "-" + RegExp.$3;
}
return true;
} else {
return doError(el,NOT_VALID);
}
}
추천
4
4
댓글 전체
사용법은 간단합니다.
필수 폼에 required 를 넣어주는것은 그누보드 폼검사기와 같고 다만, option=mail 요런식으로
옵션 지정을 해서 해당 폼에서 무엇을 검사해야 하는지 지정해줄수 있어서 좋습니다.
필수 폼에 required 를 넣어주는것은 그누보드 폼검사기와 같고 다만, option=mail 요런식으로
옵션 지정을 해서 해당 폼에서 무엇을 검사해야 하는지 지정해줄수 있어서 좋습니다.
PHPSCHOOL 에서 활동하시는 거친마루님이 작성해서 배포한 소스입니다
거친마루님은 제가 알기로는 대학생이던가, 대학원생이던가 그런데요.
남들이 흔히 생각하는 것들을 기발한 아이디어로 변형, 가공하는 탁월한 재주를 가지신 분입니다.
스쿨에서 팁엔테크에 거친마루님 이름으로 검색해보시면 제말뜻을 알겁니다
필이 오는 아이디어를 아주 독창적인 방식으로 재가공해서 편리하게 쓰도록 만든 소스로는
이 폼검사기가 유용하조.
그리고 이것은 폼메일 검사기가 아니고, 모든 폼에 다 쓰일수 있도록 한 것입니다.
그리고 그누보드에서 쓰이는 폼검사기도 방식은 달라도 거의 같은 기능을 하기 때문에
굳이 이것을 쓰실필요까지는 모르겠습니다.
그누보드 이외의 곳에서는 유용하겠지요^^
거친마루님은 제가 알기로는 대학생이던가, 대학원생이던가 그런데요.
남들이 흔히 생각하는 것들을 기발한 아이디어로 변형, 가공하는 탁월한 재주를 가지신 분입니다.
스쿨에서 팁엔테크에 거친마루님 이름으로 검색해보시면 제말뜻을 알겁니다
필이 오는 아이디어를 아주 독창적인 방식으로 재가공해서 편리하게 쓰도록 만든 소스로는
이 폼검사기가 유용하조.
그리고 이것은 폼메일 검사기가 아니고, 모든 폼에 다 쓰일수 있도록 한 것입니다.
그리고 그누보드에서 쓰이는 폼검사기도 방식은 달라도 거의 같은 기능을 하기 때문에
굳이 이것을 쓰실필요까지는 모르겠습니다.
그누보드 이외의 곳에서는 유용하겠지요^^
잘쓰겠습니다...
좋은 정보 감사합니다.