개발 Q&A

제목 배열값을 부모창으로 값을 넘길때 에러질문
글쓴이 ssukai 작성시각 2012/01/03 15:33:36
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 28867   RSS

우편번호 찾기를 만들고 있는데요

주소입력은 다중으로 여러개 입력 가능해서 우편번호 찾기 창을 열 경우 배열로 폼값등을 넘겨 줍니다.

그런데 새창에서 주소찾기를 한경우 원하는 주소를 클릭시

 

var $form = $(opener.document).find('#'+form_id);
$form.find('input:[name=' + m_post1 + ']').eq(m_eq).val(addr);
opener 부모창으로 값을 넘겨 줄때 에러도 안나고 값도 안넘어 갑니다.
배열로 안넘겨 줄경우는 제대로 동작 합니다.

jquery.js 4095번째줄에서 에러가 나네여
예외가 throw 됐지만 catch 할수 없습니다. 라고 에러가 나네여.
 다음글 이클립스 RSE와 SVN 연동 (4)
 이전글 페이징 영역에 이상한 작은점이 생깁니다. (2)

댓글

ssukai / 2012/01/03 16:09:27 / 추천 0
해결 했습니다.
jquery 문제 엿네여..
$form.find(
'input:[name="' + m_post1 + '"]').eq(m_eq).val(addr);
한대승(불의회상) / 2012/01/03 18:00:10 / 추천 0
^^

수고 하셨습니다.
mixiaoli new / 2026/03/16 15:02:08 / 추천 0

이 경우에는 폼값 전체를 배열로 넘기기보다, 몇 번째 주소 입력창인지 나타내는 index 값만 새창으로 넘기는 방식으로 처리하시면 편합니다.

예를 들어 부모창에서 주소입력 폼이


 
 
<input type="text" name="zipcode[]" id="zipcode_0">
<input type="text" name="addr1[]" id="addr1_0">
<input type="button" value="우편번호찾기" onclick="open_zip(0)">

<input type="text" name="zipcode[]" id="zipcode_1">
<input type="text" name="addr1[]" id="addr1_1">
<input type="button" value="우편번호찾기" onclick="open_zip(1)">
 
 

이런 식이라면, 새창 열 때 현재 순번만 넘깁니다.


 
 
function open_zip(idx)
{
window.open('/zip/search?idx=' + idx, 'zipWin', 'width=500,height=600');
}
 

그리고 새창에서 주소를 선택했을 때 부모창에 값을 넣을 때는 opener를 사용해서 해당 index 위치에 넣어주시면 됩니다.


 
 
function setAddress(zipcode, addr1, idx)
{
opener.document.getElementById('zipcode_' + idx).value = zipcode;
opener.document.getElementById('addr1_' + idx).value = addr1;
window.close();
}
 

주소 목록에서 클릭할 때는 이런 식으로 호출하면 됩니다.


 
 
<a href="#" onclick="setAddress('123-456', '서울시 강남구 ...', '<?php echo $idx?>'); return false;">
서울시 강남구 ...
</a>
 
 

즉 핵심은:

  1. 배열 전체를 넘기지 말고 몇 번째 입력칸인지 index만 넘긴다

  2. 새창에서 주소 선택 시 opener로 부모창 접근

  3. zipcode_0, addr1_0 처럼 id를 index와 같이 부여해서 정확한 위치에 값 입력

게시판 답변용으로는 이렇게 써도 자연스럽습니다.


 
 
이 경우에는 배열 전체를 넘기려고 하지 마시고,
몇 번째 주소폼인지 나타내는 index 값만 새창으로 넘기시는 것이 좋습니다.

예를 들어 부모창에서 우편번호찾기 버튼 클릭 시

open_zip(0)
open_zip(1)

이런 식으로 index를 넘기고,
새창에서는 그 idx 값을 받아두었다가
주소를 클릭했을 때 opener 를 이용해서
부모창의 해당 input 에 값을 넣어주시면 됩니다.

즉,

opener.document.getElementById('zipcode_'+idx).value = 우편번호;
opener.document.getElementById('addr1_'+idx).value = 주소;

이런 식으로 처리하시면
여러 개의 주소입력 폼이 있어도
선택한 위치에 맞게 값을 넣을 수 있습니다.

배열 name(zipcode[], addr1[])만 믿고 처리하기보다는
id에 index를 붙여서 구분하는 방식이 훨씬 편합니다.