우편번호 검색을 위한 자바스크립트 소스다

epost.go.kr의 우편번호 검색에 사용된 자바스크립트 소스를 이용하여 수정을 했다.

 

ASP소스와 자바스크립트 소스만 있으면 기본적으로 우편번호 검색은 끝난다

유용하게 사용하길....

 

/************************************************************************************
' 단위업무명 : 우편번호 검색을 위한 자바스크립트
' 작  성  자 : 가치노을(pobiplus@gmail.com) http://www.newnnow.co.kr
' 작  성  일  : 2011-12-01
' 수  정  자  :
' 수  정  일 :
' 내   용 : epost.go.kr에서 우편번호 검색화면 소스를 차용한것임
' 주의  사항 :
'************************************************************************************/

function eventonblur(img_name){
 var keyvalue = document.getElementById("keyword").value;
 var gubun = document.getElementById('gubun').value;
 if(gubun == "road"){
  img_url="/__cmsimg/zipcode/srch_bg.gif";
 }
 else if(gubun == "dong"){
  img_url="/__cmsimg/zipcode/srch_bg2.gif";
 }
 else if(gubun == "oldpost"){
  img_url="/__cmsimg/zipcode/srch_bg3.gif";
 }
    if((img_name.value == "") && (keyvalue == "")){
        img_name.style.background="url("+img_url+") no-repeat 2px 2px";
        img_name.style.backgroundColor="#fff";
    }
}

function fnInit(val){
 // 라디오 버튼 value 값 조건 비교
 if(val == "road"){
  document.getElementById('notitab3_list').style.display = "";
  document.getElementById('notitab4_list').style.display = "";
  document.getElementById('notitab5_list').style.display = "none";
  document.getElementById('notitab6_list').style.display = "none";
  document.getElementById('gubun').value="road";
  if(document.getElementById("keyword").value.length==0){      
   document.getElementById("keyword").style.background="url(/__cmsimg/zipcode/srch_bg.gif) #fff no-repeat 2px 1px";
  }
 
 }
 else if(val == "dong"){
  document.getElementById('notitab3_list').style.display = "none";
  document.getElementById('notitab4_list').style.display = "none";
  document.getElementById('notitab5_list').style.display = "";
  document.getElementById('notitab6_list').style.display = "none";
  document.getElementById('gubun').value="dong";
  if(document.getElementById("keyword").value.length==0){      
   document.getElementById("keyword").style.background="url(/__cmsimg/zipcode/srch_bg2.gif) #fff no-repeat 2px 1px";
  }
 }
 else if(val == "oldpost"){
  document.getElementById('notitab3_list').style.display = "none";
  document.getElementById('notitab4_list').style.display = "none";
  document.getElementById('notitab5_list').style.display = "none";
  document.getElementById('notitab6_list').style.display = "";
  document.getElementById('gubun').value="oldpost";
  if(document.getElementById("keyword").value.length==0){      
   document.getElementById("keyword").style.background="url(/__cmsimg/zipcode/srch_bg3.gif) #fff no-repeat 2px 1px";
  }
 }
}

function fnGubun(obj){
 // 라디오 버튼 value 값 조건 비교
 document.getElementById("keyword").value = "";
 if(obj.value == "road"){
  document.getElementById('notitab3_list').style.display = "";
  document.getElementById('notitab4_list').style.display = "";
  document.getElementById('notitab5_list').style.display = "none";
  document.getElementById('notitab6_list').style.display = "none";
  if(document.getElementById("keyword").value.length==0){      
   document.getElementById("keyword").style.background="url(/__cmsimg/zipcode/srch_bg.gif) #fff no-repeat 2px 1px";
  }
 
 }
 else if(obj.value == "dong"){
  document.getElementById('notitab3_list').style.display = "none";
  document.getElementById('notitab4_list').style.display = "none";
  document.getElementById('notitab5_list').style.display = "";
  document.getElementById('notitab6_list').style.display = "none";
  if(document.getElementById("keyword").value.length==0){      
   document.getElementById("keyword").style.background="url(/__cmsimg/zipcode/srch_bg2.gif) #fff no-repeat 2px 1px";
  }
 }
 else if(obj.value == "oldpost"){
  document.getElementById('notitab3_list').style.display = "none";
  document.getElementById('notitab4_list').style.display = "none";
  document.getElementById('notitab5_list').style.display = "none";
  document.getElementById('notitab6_list').style.display = "";
  if(document.getElementById("keyword").value.length==0){      
   document.getElementById("keyword").style.background="url(/__cmsimg/zipcode/srch_bg3.gif) #fff no-repeat 2px 1px";
  }
 }
}

function fnCheckForm(srcEl)
{
 var gubun, keyword,stitle;
 keyword = fnCheckstring(srcEl.keyword.value);
 stitle = srcEl.keyword.title;
 gubun = srcEl.gubun.value;
 //alert(gubun);
 if(keyword.length == 0){
  if (gubun == "road"){
   alert("도로명+건물번호를 입력하세요!\n\n검색방법 : 도로명(~로,~길)+건물번호\n- 서울시 중구 소공로 70 \n  예) '소공로(도로명) 70(건물번호)'");
  }
  else if (gubun == "dong"){
     alert("동/읍/면/리/명+지번을 입력하십시오!\n\n검색방법 : 동/읍/면/리명+지번\n- 서울시 중구 충무로1가 21-1 \n  예) '중무로1가(동명) 21-1(지번)'");
  }
  else{
     alert("동/읍/면/리/명을 입력하십시오!\n\n검색방법 : 동/읍/면/리명\n-  서울시 중구 충무로1가 \n  예) '충무로1가(동명) 또는 충무로'");
  }
  srcEl.keyword.style.backgroundImage="";
  srcEl.keyword.focus();
  return false;
 }else if(keyword.length < 2){
    alert("검색어를 2글자이상으로입력하세요!");
    srcEl.keyword.style.backgroundImage="";
    srcEl.keyword.focus();
    return false;
 }

  if (gubun == "road"){
      var str = srcEl.keyword.value.split(" ").join("");
      var strlen = str.length;
      var strdiv = "";
      for(var i = strlen-1; i > -1; i--){
          if(IsRoad(str.charAt(i))){
              strdiv = i+1;
              break;
          }
      }
      srcEl.searchKey.value = str.substring(0,strdiv);
      srcEl.MainNo.value = str.substring(strdiv,strlen);
     
      if(srcEl.searchKey.value == "시장북로"){
        alert("\"시장북로\"는 지번주소(법정동) 입니다.");
        return false;
      }
     
      if ((gubun == "road")&&((srcEl.searchKey.value == "")||(srcEl.MainNo.value == ""))) {
          alert("도로명+건물번호를 입력하세요!\n\n검색방법 : 도로명(~로,~길)+건물번호\n- 서울시 중구 소공로 70 \n  예) '소공로(도로명) 70(건물번호)'");
          return false;
      }
     
      var Temp    = srcEl.MainNo.value.split("-");
      srcEl.MainNo.value   = Temp[0];
      srcEl.SubNo.value = "";
      for (var i = 1; i < Temp.length; i++) {
          srcEl.SubNo.value = Temp[i];
          break;
      }
     
      srcEl.SubNo.value = srcEl.SubNo.value.replace(" ", "");
     
      if (srcEl.SubNo.value.length == 0) {
          srcEl.SubNo.value = "";
      }

      if ( (gubun == "road")&&(!IsNumeric(srcEl.MainNo.value) || !IsNumeric(srcEl.SubNo.value)) ) {
          alert("건물번호는 반드시 숫자만 입력하세요!");
          return false;
      }
      else{
       srcEl.MainNo.value = escape(srcEl.MainNo.value);
      }                  

  }
  //2007.11.02 동명 검색 추가 (천우관)
  else if (gubun == "dong"){
      var str = srcEl.keyword.value.split(" ").join("");
      var strlen = str.length;
      var strdiv = "";
      for(var i = strlen-1; i > -1; i--){
          if(IsDong(str.charAt(i))){
              strdiv = i+1;
              break;
          }
      }
      srcEl.searchKey.value = str.substring(0,strdiv);
      srcEl.MainNo.value = str.substring(strdiv,strlen); 

      if ((gubun == "dong")&&((srcEl.searchKey.value == "")||(srcEl.MainNo.value == ""))) {
          alert("동/읍/면/리/명+지번을 입력하십시오!\n\n검색방법 : 동/읍/면/리명+지번\n-  서울시 중구 충무로1가 21-1 \n  예) '충무로1가(동명) 21-1(지번)'");
          return false;
      }
     
      srcEl.MainNo.value = srcEl.MainNo.value.replace("산", "");
      var Temp     = srcEl.MainNo.value.split("-");
 
      srcEl.MainNo.value  = Temp[0];
      srcEl.SubNo.value = "";
 
      for (var i = 1; i < Temp.length; i++) {
          srcEl.SubNo.value = Temp[i];
          break;
      }
     
      srcEl.SubNo.value = srcEl.SubNo.value.replace(" ", "");
     
      if (srcEl.SubNo.value.length == 0) {
          srcEl.SubNo.value = "";
      }
     
      if ( (gubun == "dong")&&(!IsNumeric(srcEl.MainNo.value) || !IsNumeric(srcEl.SubNo.value)) ) {
          alert("번지는 반드시 숫자만 입력하세요!");
          return false;
      }                  
      else{
       srcEl.MainNo.value = escape(srcEl.MainNo.value);
      }                  

  }
  else if (gubun == "oldpost"){
  
      if(srcEl.keyword.value==""){
          alert("검색어를 입력하세요!");
          srcEl.keyword.focus();
          return false;
      }else if(srcEl.keyword.value.length<2){
          alert("검색어를 2글자이상으로입력하세요!");
          srcEl.keyword.focus();
          return false;
      }
      srcEl.searchKey.value = srcEl.keyword.value;
  }

  return true;
 
}

function IsNumeric(sText){
    var ValidChars = "0123456789";
    var IsNumber=true;
    var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1){
            IsNumber = false;
        }
    }
    return IsNumber;
}

function IsRoad(sText){
    var ValidChars = "개길도로리";
    var IsRoad=true;
   
    if (ValidChars.indexOf(sText) == -1){
        IsRoad = false;
    }
    return IsRoad;
}

function IsDong(sText){
    var ValidChars = "읍면동리로가";
    var IsDong=true;

    if (ValidChars.indexOf(sText) == -1){
        IsDong = false;
    }
    return IsDong;
}

function fnCheckstring(str)
{
 var index, len
 while(true) {
  index = str.indexOf(" ")
  if (index == -1) break
  len = str.length
  str = str.substring(0, index) + str.substring((index+1),len)
 }
 str = escape(str)
 while(true) {
  index = str.indexOf("%0D%0A")
  if (index == -1) break
  len = str.length
  str = str.substring(0, index) + str.substring((index+6),len)
 }
 str = unescape(str)

 return str
}

// 우편번호 검색결과 반영
function use_post(zipcode, road_address){
 post = zipcode.split("-");

 opener.parent.document.getElementById("post1").value = post[0];
 opener.parent.document.getElementById("post2").value = post[1];
 opener.parent.document.getElementById("addr").value = road_address;
 opener.parent.document.getElementById("addr2").focus();
 self.close();
}

 

혹시 소스가 파일로 필요하신분들은 메일(본문 내용을 살피면 있다)이나 댓글로 남겨주면 보내드리겠습니다

 

top