브라우저 버전별로 닫는 코드가 틀리다고 하는데...
이런 코드가 맞을 라나 모르겠넴...

 window.document.write("<!--[if IE 6]>");
 window.document.write("<script>self.opener=self;self.close();</script>");
 window.document.write("<![endif]-->");
 window.document.write("<!--[if IE 7]>");
 window.document.write("<script>window.open('about:blank','_self').close();</script>");
 window.document.write("<![endif]-->");
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기
2007/05/30 16:48 2007/05/30 16:48
Posted by 바라기

댓글을 달아 주세요

[로그인][오픈아이디란?]

<!--

// radio 또는 checkbox가 배열또는 특정문자열의 반복으로 구성된 값을 넘길때 submit()

// 체크된 값은 "y", 그렇지 않은 값은 "n"을 넘긴다.

// ex) <input type='checkbox' name='chkVal_1'>

function fSubmit() {

var f=document.form;

for (var i=0; i<f.elements.length; i++) {

if (f.elements[i].name.substr(0,6) == 'chkVal') {

if (f.elements[i].checked == false) f.elements[i].value = 'n';

else f.elements[i].value = 'y';

}

}

f.submit();

}



// 팝업을 오픈한 동시에 부모창에서 팝업으로 submit

// <form name='fm'>에서 실행시켜 result.html로 넘긴다

function popSubmit(f) {

var pop=window.open("","pop_submit","top=10,left=10,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=200,height=200);

f.method = "post";

f.action = "result.html";

f.target = "pop_submit";

f.submit();

pop.focus();

}



// 부모창의 값을 특정스크립트(result.html)에 넘긴다(팝업이 parent를 조절)

function parentSubmit(f) {

f.method = "post";

f.action = "result.html";

f.target = "_self";

f.submit();

self.close();

}



// 한 페이지에 선택될 갯수를 저장할 전역변수

// 한 페이지에 최대 4개를 선택한다.

var Select_Count = 0;

// onClick 이벤트실행시 수행되며 onChange 이벤트에서 이전값을 저장하기위한 전역변수

var Click_Value;



// 노출 radio 버턴의 패턴을 바꿀때

function DisplayChange(card_id,val) {

var opt=eval("document.form.chkDisplay_"+card_id);

var sel=eval("document.form.chkSelect_"+card_id);

var ordText=eval("OrderText_"+card_id);



for (var i=0; i<opt.length; i++) {

if ((opt[i].checked == true) && (val == 1)) {

if (Select_Count >= 4) {

alert('Over !!!');

opt[i].checked = false;

opt[i].checked = true;

return;

}

sel.style.color='#c4018a';

sel.style.background.color='#f8f7f7';

sel.disabled = false;

if (sel.options[sel.selectedIndex].value > 0) {

ordText.style.display='';

Select_Count++;

} else ordText.style.display='none';

} else if ((opt[i].checked == false) && (val == 0)) {

sel.disabled = true;

ordText.style.display='none';

if (sel.options[sel.selectedIndex].value > 0) Select_Count--;

ordText.style.display='none';

}

break;

}

}



// select 값이 바뀌면 실행되는 루틴

function OrderChange(card_id) {

var sel=eval("document.form.chkSelect_"+card_id);

var ordText=eval("OrderText_"+card_id);

if (sel.value == 0) {

Select_Count--;

ordText.style.display='none';

return;

} else {

if (Select_Count < 4) {

if (Click_Value > 0) return;

else {

Select_Count++;

ordText.style.display='';

return;

}

} else {

if (Click_Value > 0) return;

else {

alert('Over !!!');

sel.value=Click_Value;

return;

}

}

}

}



// select 박스를 클릭하면 실행되는 루틴(전역변수에 현재 클릭된 값을 저장한다)

function OrderClick(card_id) {

var sel=eval("document.form.chkSelect_"+card_id);

Click_Value = sel.value;

}



// 파일 체크박스가 1개라도 체크되어 있으면 true 리턴
function check_confirm(){

objForm = document.frmFile;
var count = 0;
if (objForm.chk != undefined){
var length = objForm.chk.length;
if(length > 1){ //체크박스가 여러개 일경우
for(var i=0; i<length; i++){
if(frmFile.chk[i].checked)
count++;
}
}else{ //체크박스가 한개일경우
if(frmFile.chk.checked)
count++;
}
}
return count;
}


// 최상위 체크 로직(chars로 넘긴 값이 있다면 true)

function containsCharsOnly(input,chars) {

for (var inx = 0; inx < input.value.length; inx++) {

if (chars.indexOf(input.value.charAt(inx)) == -1)

return false;

}

return true;

}





// 최상위 체크 로직(chars로 넘긴 값이 있다면 false)

function containsChars(input,chars) {

for (var inx = 0; inx < input.value.length; inx++) {

if (chars.indexOf(input.value.charAt(inx)) != -1)

return true;

}

return false;

}







// 숫자 체크

function isNum(input) {

var chars = "0123456789";

return containsCharsOnly(input,chars);

}







// 이름체크

function nameCheck(input){

var chars = '0123456789~!@#$%^&*()_-+=|{}[]<>,./?';

return containsChars(input,chars);

}







// 전화 번호 Check

function isPhoneCheck(input) {

var chars = "0123456789( ).-,<>{}[]_~";

return containsCharsOnly(input,chars);

}







// 영문 판별

function isPhoneCheck(input) {

var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

return containsCharsOnly(input,chars);

}







// 영숫자 판별

function isPhoneCheck(input) {

var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

return containsCharsOnly(input,chars);

}







// 입력값이 숫자,대시(-)로 되어있는지 체크

function isNumDash(input) {

var chars = "-0123456789";

return containsCharsOnly(input,chars);

}







// 입력값이 숫자,콤마(,)로 되어있는지 체크

function isNumComma(input) {

var chars = ",0123456789";

return containsCharsOnly(input,chars);

}







// 입력값이 사용자가 정의한 포맷 형식인지 체크

// 자세한 format 형식은 자바스크립트의 ''regular expression''을 참조

function isValidFormat(input,format) {

if (input.value.search(format) != -1) {

return true; file://올바른 포맷 형식

}

return false;

}







/**

* 입력값이 이메일 형식인지 체크

* ex) if (!isValidEmail(form.email)) {

* alert("올바른 이메일 주소가 아닙니다.");

* }

*/

function isValidEmail(input) {

// var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/;

var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;

return isValidFormat(input,format);

}







/**

* 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크

*/

function isValidPhone(input) {

var format = /^(\d+)-(\d+)-(\d+)$/;

return isValidFormat(input,format);

}







// 콤마 없애기

function removeComma(input) {

return input.value.replace(/,/gi,"");

}







// 문자 변환 함수

function alterString(str,before,after) {

var returnStr = "";

for(i = 0; i < str.length; i++) {

value = str.charAt(i);

index = before.indexOf(value);

if(index >= 0) value = after.charAt(index);

returnStr += value;

}

return returnStr;

}







// 소 --> 대문자 변환 함수

function ToUpper(arg) {

var str1 = "abcdefghijklmnopqrstuvwxyz";

var str2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

return alterString(arg,str1,str2);

}







// 대 --> 소문자 변환 함수

function ToLower(arg){

var str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

var str2 = "abcdefghijklmnopqrstuvwxyz";

return alterString(arg,str1,str2);

}







// 반각 문자를 전각문자로

function convert2ByteChar(x_char) {

var x_2byteChar = ""; //컨버트된 문자

var c = x_char.charCodeAt(0);

if(32 <= c && c <= 126) { //전각으로 변환될수 있는 문자의 범위

if(c == 32) { //스페이스인경우 ascii 코드 32

x_2byteChar = unescape("%uFFFC");

} else {

x_2byteChar = unescape("%u"+gf_DecToHex(c+65248));

}

}

return x_2byteChar;

}







// 10진수를 16진수로

function gf_DecToHex(x_dec) {

var x_Hex = new Array();

var x_serial = 0;

var x_over16 = x_dec;

var x_tempNum = 0;

while(x_dec > 15) {

var x_h = x_dec % 16; //나머지

x_dec = parseInt(x_dec/16); //몫

x_Hex[x_serial++] = (x_h > 9 ? String.fromCharCode(x_h + 55) : x_h); //16진수코드변환

}







//마지막은 몫의 값을 가짐

x_Hex[x_serial++] = (x_dec > 9 ? String.fromCharCode(x_dec + 55) : x_dec); //16진수코드변환



//몫,나머지,나머지,.....

var retValue = "";

for(var i=x_Hex.length ; i>0 ;i--) {

retValue += x_Hex[i-1];

}

return retValue;

}







// input box에 space,  등 만으로 넣고 장난 칠때 이들 문자 뺀 길이를 통해 유효성 체크한다...

function CheckStr(strOriginal, strFind, strChange){

var position, strOri_Length;

position = strOriginal.indexOf(strFind);

while (position != -1){

strOriginal = strOriginal.replace(strFind, strChange);

position = strOriginal.indexOf(strFind);

}

strOri_Length = strOriginal.length;

return strOri_Length;

}







// 체크 박스에 체크가 되어 있으면 true

function checkValidator(str) {

if(str.checked) return true;

else return false;

}







// 비밀번호는 4자 등 최대 최소 길이를 파람으로 주고 처리...

function checkLength(str,minLng,maxLng){

var ckstr = str.value.length;

if (parseInt(ckstr) < parseInt(minLng) || parseInt(ckstr) > parseInt(maxLng)) return false;

return true;

}







// 숫자만 받아서 아니면 메세지 보여 주는

function onlyNumber(objEv) {

if(!isNum(objEv)){

alert("숫자만 입력가능합니다.");

objEv.value = "";

objEv.focus();

return;

}

}







// 숫자를 체크하다가 6자 등 원하는 만큼 이동후 다음 input 박스로 이동 시키는...

function goJump(fname, len, goname){

onlyNumber(fname);

if (document.all[fname].value.length == len) document.all[goname].focus();

}







// 주민등록번호 체크 로직

function check_ResidentNO(str_f_num,str_l_num){

var i3=0

for (var i=0;i<str_f_num.length;i++){

var ch1 = str_f_num.substring(i,i+1);

if (ch1<'0' || ch1>'9') i3=i3+1;

}

if ((str_f_num == '') || ( i3 != 0 )) return false;

var i4=0;

for (var i=0;i<str_l_num.length;i++){

var ch1 = str_l_num.substring(i,i+1);

if (ch1<'0' || ch1>'9') i4=i4+1;

}

if ((str_l_num == '') || ( i4 != 0 )) return false;

if(str_f_num.substring(0,1) < 4) return false;

if(str_l_num.substring(0,1) > 2) return false;

if((str_f_num.length > 7) || (str_l_num.length > 8)) return false;

if ((str_f_num == '72') || ( str_l_num == '18')) return false;



var f1=str_f_num.substring(0,1)

var f2=str_f_num.substring(1,2)

var f3=str_f_num.substring(2,3)

var f4=str_f_num.substring(3,4)

var f5=str_f_num.substring(4,5)

var f6=str_f_num.substring(5,6)

var hap=f1*2+f2*3+f3*4+f4*5+f5*6+f6*7

var l1=str_l_num.substring(0,1)

var l2=str_l_num.substring(1,2)

var l3=str_l_num.substring(2,3)

var l4=str_l_num.substring(3,4)

var l5=str_l_num.substring(4,5)

var l6=str_l_num.substring(5,6)

var l7=str_l_num.substring(6,7)

hap=hap+l1*8+l2*9+l3*2+l4*3+l5*4+l6*5

hap=hap%11

hap=11-hap

hap=hap%10

if (hap != l7) return false;

return true;

}







// 바이트 구하기

function getByteLen(str){

return(str.length+(escape(str)+"%u").match(/%u/g).length-1);

}







// url 가져오기

function getUrlAddress(){

var pageUrl = document.location;

pageUrl = new String(pageUrl);

return pageUrl.substring(0,pageUrl.lastIndexOf("/"));

}







// 오른마우스 금지, 나중에 해당 주석 풀고 사용

function rightbutton(e){

if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2))

return false;

else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2 || event.button == 3))

{

alert("죄송합니다!! 정보무단복제를 막기 위하여 오른쪽 마우스 사용을 허용하지 않습니다.");

return false;

}

return true;

}







//document.onmousedown=rightbutton;



// 컨트롤 키 금지, 나중에 해당 주석 풀고 사용

function checkCtl(){

if (document.all){

if(event.keyCode==17) {

alert("죄송합니다!! 컨트롤키 사용을 허용하지 않습니다.");

return false;

}

}

}







//document.onkeydown = checkCtl;



function setCookie(name,value) {

document.cookie = name+"="+escape(value)+";path=/;domain=.kkaok.pe.kr;";

}



function setCookie(name,value, expires) {

document.cookie = name + "=" + escape(value) +

"; path=/; expires=" + expires.toGMTString();

}



function getCookie(Name) {

var search = Name + "="

if (document.cookie.length > 0) { // 쿠키가 설정되어 있다면

offset = document.cookie.indexOf(search)

if (offset != -1) { // 쿠키가 존재하면

offset += search.length

// set index of beginning of value

end = document.cookie.indexOf(";", offset)

// 쿠키 값의 마지막 위치 인덱스 번호 설정

if (end == -1)

end = document.cookie.length

return unescape(document.cookie.substring(offset, end));

}

}

}







String.prototype.trim = function(){

return this.replace(/(^\s*)|(\s*$)/gi, "");

}



//문자 바꾸기, 사용법 var str = 문자열.replaceAll("a", "1");

String.prototype.replaceAll = function(str1, str2) {

var temp_str = "";

if (this.trim() != "" && str1 != str2) {

temp_str = this.trim();

while (temp_str.indexOf(str1) > -1){

temp_str = temp_str.replace(str1, str2);

}

}

return temp_str;

}

//-->
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/05/28 13:23 2007/05/28 13:23
Posted by 바라기

댓글을 달아 주세요

[로그인][오픈아이디란?]

XML 태그중에 첫번째 Member 태그의 속성중 name 속성이 있는지 찾아서
없으면 name 속성을 추가하며 "담당"이라는 값으로 설정하는 코드 ( JS 코드 )

var memberElement = xmlDoc.getElementsByTagName("Member");
if( memberElement.item(0).getAttribute("name") == null )
{
        var attr = xmlDoc.createAttribute("name");
        attr.value = "담당";
        memberElement.item(0).setAttributeNode(attr);
}
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/05/28 13:21 2007/05/28 13:21
Posted by 바라기

댓글을 달아 주세요

[로그인][오픈아이디란?]

예를들어...
시스템 구성이 아래와 같이 되어있다고 가정을 할때.
----------------------------------------------------
어플리케이션(결재) 서버 : app.company.com
메일서버 : mail.company.com
----------------------------------------------------

시스템에서의 처리는 당연 결재서버 또는 메일서버를 Primary Server로 구성하고 나머지 서버는 Secondary Server로 구성하여 프로그램상으로 개발하는데는 문제점이 없도록 하고 있습니다.
하지만 웹브라우저상에서 처리되어야 하는 코드중에 이런것이 있습니다.

1) 결재 처리요청 메일 발송
2) 결재자 결재요청 메일 수신
3) 결재할 문서 목록에서 문서를 클릭 (app.company.com)
4) 승인버튼 클릭하여 결재처리 (app.company.com)
5) 결재자에게 발송된 결재요청메일 삭제 (mail.company.com)
6) 결재할 문서 목록 갱신 (app.company.com)

위와같은 순서로 처리되는 경우,
5) -> 6) 항목으로 넘어가는 과정에서 웹브라우저상 권한없음 오류가 발생할 수 있습니다.
이는 DB ACL 문제가 아니며 브라우저상 도메인이 다른 페이지에 대한 자바스크립트 접근권한이 없다는 경고입니다.

물론 5)번 항목 처리시 새창을 오픈해서 처리하고 닫아버리면 될수도 있는 문제겠지만, 창이 열리고 닫히고 그러면 싫어할 사람들이 많죠.
아니면 document.domain = "company.com"; 코드를 화면에 보여지는 모든 페이지에 추가하면 되는 문제일 수도 있습니다.  하지만 연동되는 타시스템이 있다면 이걸 맞춰주는것도 쉬운 문제는 아닐듯 합니다.

다른 방법에 대해서 설명을 하겠습니다.
5) 번 항목에서 결재 요청메일을 삭제하고 나서는 화면이 어떻게 되어야할지 보통적으로 에이전트에서 자바스크립트 형식으로 프린트를 합니다.

print |<script>
        try
        {
                opener.window.location.reload();
                window.close();
        }
        catch( e )
        {
                var actionURL = "http://app.company.com/refresh.nsf/Refresh?CreateDocument";
                var _form = document.createElement("form");
                _form.action = actionURL;
                _form.method = "post";
                // saveoptions 필드를 0으로 두어야 필요없는 문서가 DB에 저장되지 않습니다.
                var _saveoption = document.createElement( "<input type=hidden name='saveoptions'>" );
                _form.appendChild(_saveoption);
                document.body.appendChild(_form);
                _form.saveoptions.value = "0";
                _form.submit();
        }
</script>|

마지막에 처리될 코드이죠...

그럼 이것으로 끝나냐? 아니죠?
위의 코드에 보면 var actionURL = "http://app.company.com/refresh.nsf/Refresh?CreateDocument";
이라는 코드가 있습니다. 이는 refresh.nsf 라는 DB가 있어야 하며 그 DB에는 Refresh라는 양식이 있어야 합니다.
또한 var _saveoption = document.createElement( "<input type=hidden name='saveoptions'>" ); 이라는 부분이 있는데 이는 Refresh 양식에 saveoptions 필드가 있어야 존재해야 한다는 얘기가 됩니다.

그리고 또 중요한건...
Refresh 양식에 $$Return 필드를 두어 필요한 코드가 들어갈 수 있도록 합니다.
예를들어 "<script>opener.window.location.reload();window.close();</script>"라고 두면 상위 opener를 reload하고 창이 닫힙니다.


-------------------------------------
위와 같이 처리하는 이유는...
CreateDocument는 URL 호출이기 때문에 도메인과 상관없이 호출할 수 있으며, createdocument로 호출된 이후에는 opener와 같은 도메인인 app.company.com으로 변경되므로 opener를 자바스크립트로 접근하여 처리할 수 있게 됩니다.

다른 방법도 있겠지만, 여러가지로 응용하여 사용할 수 있는 코드입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기
2007/05/25 20:27 2007/05/25 20:27
Posted by 바라기

댓글을 달아 주세요

[로그인][오픈아이디란?]

function NumberOnly()
{
        var input_key = event.keyCode;
        if (!(IsNumber( input_key )))
        {       
                event.keyCode = '0';
                return false;
        }
}
function IsNumber( inputValue )
{
                if (inputValue >= '48' && inputValue <= '57') return true;
                else         return false;
}
function _Currency(num)
{        
        if(num == "" || num == 0)
        {
                return num;        
        }
        var dotPos = (num+"").split(".");
        var dotU = dotPos[0];
        var dotD = dotPos[1];
        if (Number(dotU) < 0)
        {
                dotU  = (Number(dotU) * -1) + "";
                var minus = true
        }
        else
        {
                var minus = false
        }
        var commaFlag = dotU.length%3
        if(commaFlag)
        {
                var out = dotU.substring(0, commaFlag)
                if (dotU.length > 3)
                {
                        out += ",";
                }
        }
        else
        {
                var out = "";
        }
        for (var i=commaFlag; i < dotU.length; i+=3)
        {
                out += dotU.substring(i, i+3);
               
                if( i < dotU.length-3)
                {
                        out += ",";
                }
        }
       
        if(minus)
        {
                out = "-" + out;
        }
       
        if(dotD)
        {
                out +=  "." + dotD ;
        }
       
        return out;
}
function _Reverse(str)
{
        if(str == null)
                return null;
        var s = str;
        var r = '';
        for(i=str.length; i>0; i--)
                r += s.charAt(i-1);
        return r;
}
function _CurrencyClear(s)
{
        var cntArray = new Array();
        for( var i = 0 ; i < s.length ; i++)
        {
                cntArray[i] = s.indexOf(",");
                s = s.replace(",","");
        }
        return s;
}
function setCurrency(objName)
{        
        var input = document.getElementById(objName);
        if ( input.value.length == 0 )
        {
                return;
        }
        var amt = 0;
        if(input.value.length != 0 )
        {
                amt = fillZero(input.value, input.format);
        }
        input.value =        _Currency(amt);
}
function focusCurrency(objName)
{
        var input = document.getElementById(objName);
        if ( input.value.length == 0 )
        {
                return;
        }
        input.value = Number(_CurrencyClear(input.value));
        input.select();
}
function fillZero(input, type)
{
        //input이 숫자타입으로 넘어올 때
        //에러가 남. 그래서 스트링 타입으로 변환해야 함
        if ( !type )
        {
                return input+"";
        }
        var format = type.split('.');
        var value = (input+"").split('.');
       
        if ( Number(format[1]) == 0 )
        {
                return input+"";
        }       
        if (!value[1])
        {       
                value[1] = "";
        }
       
        //소수점 이하가 포맷보다 클 경우는
        //그냥 반올림하여 리턴한다
        if (value[1].length > Number(format[1]))
        {
                 return (Number(input).toFixed(Number(format[1])));
        }
        //소수점 자리수에 맞게 '0'을 채워준다
        //예를 들면 데이타 형식이 5.2일 경우
        //입력값이 '50'이면 '50.00'으로 리턴한다
        while ( value[1].length < Number(format[1]) )
        {
                value[1] += "0";
        }               
       
        //value[0]을 Number 객체로 변환
        //000.000 같은 경우를 0.000으로 변환하기 위해서
        return (Number(value[0]) + "." + value[1]);
}
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/05/25 20:25 2007/05/25 20:25
Posted by 바라기

댓글을 달아 주세요

[로그인][오픈아이디란?]

예전에 내 Knowledge DB에 작성해 놓은 문서인데요...
JS의 xmldoc와 VBScript의 tar 인수값이 문서 ID였는지 모르겠네요... ㅋㅋㅋ


---------------------------------------------------------------------------------------------------
HTTP개체를 VB나 JScript로 선언하고 노츠에서 Back-End로 처리하듯이 웹 스크립트로 처리한다면..??

물론, 어떤 분들은 숨겨진 프레임을 사용할 수도 있다고들 합니다.
하지만 숨겨진 프레임은 서브밋후 스크립트는 완료를 기다려 주지 않죠.. 바로 다음 로직이 수행되니 서브밋후 후속 조치에 어려운점들이 많습니다.

자 그럼.. 이 방법은 긴말이 필요 없습니다.

문서삭제를 예를 들어 간단한 셈풀 쏘스를 드립니다.

<script language="JScript">
function PostOrder (xmldoc)
{
var http = new ActiveXObject ("Microsoft.XMLHTTP");
http.Open("POST", "http://server/notes.nsf/view/Unid?DeleteDocument", false);
http.Send(xmldoc);
.
.
.

}
</script>

<script language=VBScript>
sub deleteDoc(tar)
dim Http
Set Http = CreateObject("Microsoft.XMLHTTP")

Targetpage = tar
Http.open "POST", Targetpage, False
Http.send RequestXML
.
.
.
End Sub
</SCRIPT>
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기
2007/05/25 14:36 2007/05/25 14:36
Posted by 바라기

댓글을 달아 주세요

[로그인][오픈아이디란?]

사용자가 E-Mail 주소를 형식에 맞게끔 입력했는지 체크하는 자바스크립트 코드

<script language="javascript">
function isEmail(str) {
// regular expression 지원 여부 점검
var supported = 0;
if (window.RegExp) {
var tempStr = "a";
var tempReg = new RegExp(tempStr);
if (tempReg.test(tempStr)) supported = 1;
}
if (!supported)
return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
return (!r1.test(str) && r2.test(str));
}
</script>
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/05/25 14:01 2007/05/25 14:01
Posted by 바라기

댓글을 달아 주세요

[로그인][오픈아이디란?]