Showing
1 changed file
with
86 additions
and
0 deletions
postcode.v2.js
0 → 100644
1 | +<input type="text" id="sample3_postcode" placeholder="우편번호"> | ||
2 | +<input type="button" onclick="sample3_execDaumPostcode()" value="우편번호 찾기"><br> | ||
3 | +<input type="text" id="sample3_address" placeholder="주소"><br> | ||
4 | +<input type="text" id="sample3_detailAddress" placeholder="상세주소"> | ||
5 | +<input type="text" id="sample3_extraAddress" placeholder="참고항목"> | ||
6 | + | ||
7 | +<div id="wrap" style="display:none;border:1px solid;width:500px;height:300px;margin:5px 0;position:relative"> | ||
8 | +<img src="//t1.daumcdn.net/postcode/resource/images/close.png" id="btnFoldWrap" style="cursor:pointer;position:absolute;right:0px;top:-1px;z-index:1" onclick="foldDaumPostcode()" alt="접기 버튼"> | ||
9 | +</div> | ||
10 | + | ||
11 | +<script src="https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script> | ||
12 | +<script> | ||
13 | + // 우편번호 찾기 찾기 화면을 넣을 element | ||
14 | + var element_wrap = document.getElementById('wrap'); | ||
15 | + | ||
16 | + function foldDaumPostcode() { | ||
17 | + // iframe을 넣은 element를 안보이게 한다. | ||
18 | + element_wrap.style.display = 'none'; | ||
19 | + } | ||
20 | + | ||
21 | + function sample3_execDaumPostcode() { | ||
22 | + // 현재 scroll 위치를 저장해놓는다. | ||
23 | + var currentScroll = Math.max(document.body.scrollTop, document.documentElement.scrollTop); | ||
24 | + new daum.Postcode({ | ||
25 | + oncomplete: function(data) { | ||
26 | + // 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분. | ||
27 | + | ||
28 | + // 각 주소의 노출 규칙에 따라 주소를 조합한다. | ||
29 | + // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다. | ||
30 | + var addr = ''; // 주소 변수 | ||
31 | + var extraAddr = ''; // 참고항목 변수 | ||
32 | + | ||
33 | + //사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다. | ||
34 | + if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우 | ||
35 | + addr = data.roadAddress; | ||
36 | + } else { // 사용자가 지번 주소를 선택했을 경우(J) | ||
37 | + addr = data.jibunAddress; | ||
38 | + } | ||
39 | + | ||
40 | + // 사용자가 선택한 주소가 도로명 타입일때 참고항목을 조합한다. | ||
41 | + if(data.userSelectedType === 'R'){ | ||
42 | + // 법정동명이 있을 경우 추가한다. (법정리는 제외) | ||
43 | + // 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다. | ||
44 | + if(data.bname !== '' && /[동|로|가]$/g.test(data.bname)){ | ||
45 | + extraAddr += data.bname; | ||
46 | + } | ||
47 | + // 건물명이 있고, 공동주택일 경우 추가한다. | ||
48 | + if(data.buildingName !== '' && data.apartment === 'Y'){ | ||
49 | + extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName); | ||
50 | + } | ||
51 | + // 표시할 참고항목이 있을 경우, 괄호까지 추가한 최종 문자열을 만든다. | ||
52 | + if(extraAddr !== ''){ | ||
53 | + extraAddr = ' (' + extraAddr + ')'; | ||
54 | + } | ||
55 | + // 조합된 참고항목을 해당 필드에 넣는다. | ||
56 | + document.getElementById("sample3_extraAddress").value = extraAddr; | ||
57 | + | ||
58 | + } else { | ||
59 | + document.getElementById("sample3_extraAddress").value = ''; | ||
60 | + } | ||
61 | + | ||
62 | + // 우편번호와 주소 정보를 해당 필드에 넣는다. | ||
63 | + document.getElementById('sample3_postcode').value = data.zonecode; | ||
64 | + document.getElementById("sample3_address").value = addr; | ||
65 | + // 커서를 상세주소 필드로 이동한다. | ||
66 | + document.getElementById("sample3_detailAddress").focus(); | ||
67 | + | ||
68 | + // iframe을 넣은 element를 안보이게 한다. | ||
69 | + // (autoClose:false 기능을 이용한다면, 아래 코드를 제거해야 화면에서 사라지지 않는다.) | ||
70 | + element_wrap.style.display = 'none'; | ||
71 | + | ||
72 | + // 우편번호 찾기 화면이 보이기 이전으로 scroll 위치를 되돌린다. | ||
73 | + document.body.scrollTop = currentScroll; | ||
74 | + }, | ||
75 | + // 우편번호 찾기 화면 크기가 조정되었을때 실행할 코드를 작성하는 부분. iframe을 넣은 element의 높이값을 조정한다. | ||
76 | + onresize : function(size) { | ||
77 | + element_wrap.style.height = size.height+'px'; | ||
78 | + }, | ||
79 | + width : '100%', | ||
80 | + height : '100%' | ||
81 | + }).embed(element_wrap); | ||
82 | + | ||
83 | + // iframe을 넣은 element를 보이게 한다. | ||
84 | + element_wrap.style.display = 'block'; | ||
85 | + } | ||
86 | +</script> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment