function js_validateForm_fw(formObj) {
this.form = formObj; // 대상폼 폼
checkAll(formObj) ;
}
// 전체 폼 체크
function checkAll(formObj) {
return this.checkAllInput(formObj) && this.checkAllSelect(formObj) && this.checkAllTextarea(formObj);
}
function checkAllInput(formObj) {
this.form = formObj;
for (var i=0; i< this.form.elements.length; i++) {
if (this.form.elements[i].tagName == "INPUT") {
if (this.form.elements[i].type != "hidden"){
if ( !this.checkObject(this.form.elements[i])) return false;
}
}
}
return true;
}
function checkAllSelect () {
for (var i=0; i< this.form.elements.length; i++) {
if (this.form.elements[i].tagName == "SELECT") {
if ( !this.checkObject(this.form.elements[i])) return false;
}
}
return true;
}
function checkAllTextarea() {
for (var i=0; i< this.form.elements.length; i++) {
if (this.form.elements[i].tagName == "TEXTAREA") {
if ( !this.checkObject(this.form.elements[i])) return false;
}
}
return true;
}
// 하나의 입력항목에 대한 체크
function checkObject (eleObj) {
// var lio = eleObj.name.lastIndexOf(":");
// id를 있다면 ID 기반으로 없다면 name 기반으로 옵션 체크를 한다.
var splitName = (isNullObject(eleObj.id) ? eleObj.name.split(":") : eleObj.id.split(":") );
var objValue = eleObj.value;
this.message = new Dictionary();
this.message.put( "m" , "을 입력해주십시오.");
this.message.put( "/" , "입력값이 지정된 형식과 일치 하지 않습니다.");
this.message.put( "f" , "입력값이 실수형이 아닙니다.");
this.message.put( "i" , "은 숫자를입력해 주십시오.");
this.message.put( "l" , "입력값이 Long형이 아닙니다.");
this.message.put( "H" , "입력값은 한글을 포함할 수 없습니다.");
this.message.put( "h" , "입력값은 한글이 포함되어 있지 않습니다.");
this.message.put( "e" , "Email 형식이 올바르지 않습니다.");
this.message.put( "y" , "년도 형식이 올바르지 않습니다.");
this.message.put( "d" , "날짜형식이 올바르지 않습니다.");
if (splitName.length > 1) {
// 해당 Object의 validation값 체크
var objValidationFlag = true;
for ( var j = 1; j < splitName.length ; j++) {
switch (splitName[j].charAt(0) ) {
// 필수 입력 처리
case "m":
objValidationFlag = isMandatory(objValue);
break;
// Regular 항목 체크
case "/":
objValidationFlag = isEmpty(objValue) ? true : isSearch(objValue, splitName[j]);
break;
// Float 체크
case "f":
objValidationFlag = isEmpty(objValue) ? true : isFloat(objValue);
break;
// Int 체크
case "i":
objValidationFlag = isEmpty(objValue) ? true : isInt(objValue);
break;
// Long 체크
case "l":
objValidationFlag = isEmpty(objValue) ? true : isLong(objValue);
break;
// 한글이 포함되어 있는가 검사
case "h":
objValidationFlag = isEmpty(objValue) ? true : isHangul(objValue);
break;
// 한글이 포함되어 있지 않은가 체크
case "H":
objValidationFlag = isEmpty(objValue) ? true : !isHangul(objValue);
break;
// Email 체크
case "e":
objValidationFlag = isEmpty(objValue) ? true : isEmail(objValue);
break;
// 년도체크
case "y":
objValidationFlag = isEmpty(objValue) ? true : isYear(objValue);
break;
// 날짜체크
case "d":
objValidationFlag = isEmpty(objValue) ? true : isDate(objValue);
break;
}
if(!objValidationFlag) {
var msg = "[" + (isNullObject(eleObj.alt) ? splitName[0] : eleObj.alt) + "]";
msg += "\n" + this.message.get(splitName[j].charAt(0));
alert(msg);
try{eleObj.focus();} catch (e) {}
return false;
}
}
// 존재하는가 체크
var intendedObj = document.getElementsByName(splitName[0])[0];
if (isNullObject(intendedObj)) {
// input 타입의 새로운 객체 생성
var newObj = document.createElement("input");
newObj.type = "hidden";
newObj.name = splitName[0];
newObj.id = splitName[0];
newObj.value = objValue
this.form.appendChild(newObj);
} else {
// TODO: 동일 이름의 객체가 두개 이상일 수 있다.
// - 지금은 하나만 만든다.
intendedObj.value = objValue
}
}
return true;
}
function check_m(el) {
return isMandatory(el) ;
}
function isMandatory(el) {
return (el == "" || el == null) ? false : true;
}
function isSearch(el, pattern) {
eval("var fm = " + pattern + ";");
var p = el.search(fm);
return (p == -1 ? false : true);
}
function isFloat(el) {
if (isNaN(parseFloat(el))) {
return false;
}
return true;
}
function isInt(el) {
if (isNaN(parseInt(el)) ||
(parseInt(el) != parseFloat(el))) {
return false;
}
return true;
}
function isLong( el) {
return isInt(el);
}
function isNullObject(el){
return (el == "undefined" || el==null) ? true : false;
}
function isEmpty(el){
return ( el == null || el == "" ) ? true : false;
}
function isEmail(el) {
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
return (el.search(filter) == -1 ? false : true);
}
// 한글 체크하는것이 아니라 유니코드체크하는것이네.. 쩝.. ^^;;
// 머 크게 문제는 없겠지...
function isHangul(el) {
return (escape(el).search(/%u/i) == -1 ? false : true );
}
function trim(str){
return str.replace(/(^\s*)|(\s*$)/ig, "");
}
function isYear(str) {
return isSearch(str, "/^\d{0,4}$/i"); // <- /^\d{4}$/i
}
function isDate(str) {
return isSearch(str, "/^(\d{1,4})\\/((0[1-9])|(1[0-2]))\\/((0[1-9])|([1-2][0-9])|(3[0-1]))$/i");
}
function Dictionary () {
this.nodeObject = new Object();
this.count=0;
this.put = function (key, value) {
obj = this.nodeObject;
this.searchFlag = 0;
var addFlag = true;
for(var n in obj) {
if(n == key) {
obj[key] = value;
addFlag = false;
}
}
if(addFlag) {
obj[key] = value;
this.count++;
}
}
this.get = function(key) {
obj = this.nodeObject;
return obj[key];
}
this.keys = function(){
return this.nodeObject;
}
this.del = function(key){
this.put(key, null);
this.count--;
}
this.size = function(){
return this.count;
}
}
댓글 없음:
댓글 쓰기