인트라넷 디버깅 : 첩약건강보험 처방을 <기존처방>에서 불러 들어오면, 체크를 켜주려고 합니다.
작성자 정보
- 삼둡 작성
- 작성일
컨텐츠 정보
- 474 조회
- 목록
본문
rx_made.php 에서 기존처방을 뿌리는데
echo "() {";
echo "opener.document.prescript.cc.value='" ; echo $array[cc] ; echo "'; \n";
echo "opener.document.prescript.pack.value='" ; echo $array[pack] ; echo "'; \n";
echo "opener.document.prescript.ch.value='" ; echo $array[ch] ; echo "'; \n";
echo "opener.document.prescript.howto.value='"; echo $array[howto] ; echo "'; \n";
echo "opener.document.prescript.comment.value='"; echo $array[comment] ; echo "'; \n";
이런 식으로 처방을 선택하면
불려진 창의 적당한 값을 때려 넣는 자바스크립트를 프린트 해서 작동하게 합니다.

<input type=checkbox name=receipt tabindex=127 value=1 checked disabled>
첩건
<input type=checkbox name=chch tabindex=128 value=1>
첩건은 그러니까
opener.document.prescript.chch.value 정되 되겠네
근데 값을 주는게 아니라
체크 언체크로 값을 넘기려면 어떻게 해야하나
웹에서 php와 자바스크립트로 구현하고 있어. 처방을 입력하는 프로그램인데, 과거 처방을 불러오기 버튼을 누르면 db에서 추출해서 과거의 처방을 보여줘. 그것은 새 창을 띄워서 보내주지, 그러면 사용자는 처방을 선택하면 여러 가지 값이 "opener.document.prescript.chch.value="의 방식으로 처음 윈도우에 반영하게 하고 있어. 값은 그렇게 넘겨주면 되는데 체크 박스는 어떻게 해야할까?
ChatGPT의 말:
좋은 질문이에요! opener.document를 통해 부모 창의 요소를 조작하는 방식은 올바른 접근이고, 체크박스도 같은 방식으로 제어할 수 있어요. 체크박스의 checked 속성을 조작하면 됩니다.
예를 들어, 부모 창(처방 입력 폼)에 다음과 같은 체크박스가 있다고 가정합시다:
html
복사편집
<input type="checkbox" name="symptom1" id="symptom1">
자식 창(과거 처방 선택 창)에서 이 체크박스를 체크하거나 해제하고 싶다면 JavaScript로 다음과 같이 할 수 있어요:
체크박스 체크하기
javascript
복사편집
opener.document.getElementById('symptom1').checked = true;
체크박스 체크 해제하기
javascript
복사편집
opener.document.getElementById('symptom1').checked = false;
체크 상태를 토글하고 싶다면:
javascript
복사편집
let checkbox = opener.document.getElementById('symptom1'); checkbox.checked = !checkbox.checked;
체크박스가 여러 개 있는 경우
예를 들어 symptom[]처럼 name 속성으로 배열을 구성했다면:
html
복사편집
<input type="checkbox" name="symptom[]" value="cough" id="symptom_cough"> <input type="checkbox" name="symptom[]" value="fever" id="symptom_fever">
자식 창에서 특정 항목만 체크하려면 id나 value 값을 기준으로 개별 접근하면 됩니다:
javascript
복사편집
opener.document.getElementById('symptom_cough').checked = true;
또는 getElementsByName으로 배열을 전부 가져와서 반복 처리도 가능하죠:
javascript
복사편집
let symptoms = opener.document.getElementsByName('symptom[]'); for (let i = 0; i < symptoms.length; i++) { if (symptoms[i].value === 'cough') { symptoms[i].checked = true; } }
필요하다면, 체크할 항목들을 배열로 넘겨서 루프로 처리하는 것도 가능해요. 어떤 식으로 데이터를 전달하고 체크할지 더 구체적인 예가 있으면 그걸 기반으로 코드도 짜줄 수 있어요. :)
if ($array[chch]) {
echo "opener.document.prescript.getElementById('chch').cheked = true;";
}
==>
opener.document.getElementById('chch').cheked = true;
관련자료
-
이전
-
다음