묻고답하기
3일째 헤매고 있는 자바스크립트 코드 도움좀 주세요
2011.05.04 02:22
2단 다중 셀렉트 박스를 활용하여 글쓰기를 합니다.
확장변수중 하나를 셀렉트박스로 만들어 주소(동)를 선택하게 하고,
값이 선택되면 그 주소(동)에 속한 아파트이름 배열들이 타이틀변수(글제목)에 셀렉트박스로 담기도록 해서,
값을 선택후 등록하면 저장되도록 하였습니다.
글등록은 잘됩니다.
문제는 글수정시 저장된 아파트이름(글제목)이 선택유지되지 않은상태로 호출되는 것입니다.
어떻게 하면 selected="selected" 상태로 불러올수 있을까요?
아래 색상으로 표시한 부분을 자바스크립트 언어로 바꾸면 될거 같긴한데 도와주십시오.
감사합니다.
<script language='javascript'>
var cnt = new Array();
cnt[0] = new Array('아파트명');
cnt[1] = new Array("녹원아파트", "동보아파트", "동원아파트", "보우아파트", "아주1차");
cnt[2] = new Array("산호1차", "산호2차", "황제아파트");
cnt[3] = new Array("신안인스빌", "신일해피트리", "엘드수목토", "우남퍼스트빌");
cnt[4] = new Array("극동아파트", "늘푸른벽산", "동신아파트", "벽산1차", "삼보아파트");
cnt[5] = new Array("에이스");
cnt[6] = new Array("금강1차", "금강2차", "대원아파트", "동진아파트", "삼화아파트");
cnt[7] = new Array("대명아파트", "동우아파트", "명신아파트", "미덕아파트", "청도아파트");
cnt[8] = new Array("부국아파트", "경신아파트", "상아그린", "해가든아파트");
cnt[9] = new Array("경남아너스빌", "경신둥지", "금보아파트", "뉴월드아파트");
cnt[10] = new Array("유호엔플러스빌", "풍림1차", "풍림2차", "풍림3차", "풍림4차");
cnt[11] = new Array("광덕아파트", "극동아파트", "녹원아파트", "대우1차", "대우2차");
cnt[12] = new Array("동양덱스빌", "매꼴삼성", "삼환.한진", "숲속마을1단지");
cnt[14] = new Array("건영1차", "건영2차", "건영3차", "건영4차", "건영5차", "건영7차");
cnt[15] = new Array("가야아파트", "삼호아파트", "세우아파트", "세원아파트", "수정아파트");
cnt[16] = new Array("동진아파트", "무궁화아파트", "서강아파트", "태산아파트");
cnt[17] = new Array("연꽃금호타운", "연꽃대우,삼호", "연꽃태평1단지", "연꽃태평2단지");
cnt[18] = new Array("성원아파트", "참이슬아파트", "동아아파트", "대우4차");
function change(ku) {
sel=document.psm.title
/* 옵션메뉴삭제*/
for (i=sel.length-1; i>=0; i--){
sel.options[i] = null
}
/* 옵션박스추가 */
for (i=0; i < cnt[ku].length;i++){
sel.options[i] = new Option(cnt[ku][i], cnt[ku][i]);
if(sel.options[i].value=="<?={$oDocument->getTitleText()}?>")
sel.options[i].selected = true;
}
}
</script>
<form action="./" method="post" onsubmit="return procFilter(this, insert)" id="fo_write" name="psm">
<select name='extra_vars3' onchange="change(this.selectedIndex);" class=select>
<option value=''>동선택</option>
<option value="거모동">거모동</option>
<option value="논곡동">논곡동</option>
<option value="능곡동">능곡동</option>
<option value="대야동">대야동</option>
<option value="도창동">도창동</option>
<option value="매화동">매화동</option>
<option value="목감동">목감동</option>
<option value="미산동">미산동</option>
<option value="신천동">신천동</option>
<option value="월곶동">월곶동</option>
<option value="은행동">은행동</option>
<option value="장곡동">장곡동</option>
<option value="장현동">장현동</option>
<option value="정왕동">정왕동</option>
<option value="조남동">조남동</option>
<option value="포동">포동</option>
<option value="하상동">하상동</option>
<option value="하중동">하중동</option>
</select>
<select name='title' class='select'>
<option>아파트명</option>
</select>
</form>
댓글 4
-
라르게덴
2011.05.04 02:30
-
jjabez
2011.05.04 03:02
라르게덴님 일본에 계시면서 늦게까지 안주무시고...빨리 일자리가 해결되시기를 -
jjabez
2011.05.04 03:35
라르게덴님 답변 감사합니다. 해결은 아직 못했습니다.
자바 스크립트코드는 먼저 쓴 내용대로이고, 글쓰기 write_form.html 의 해당코드는 다음과 같습니다.
<div class="Dong"> // 확장변수 3
{@ $key = 3}
{@ $val = $extra_keys[$key]}
{$val->getFormHTML()}
</div>
<div class="AptName"> // 타이틀
<select name="title" id="title">
<option value="">아파트선택</option>
</select>
</div>
주소(동이름)이 확장변수이고, 아파트이름이 타이틀변수입니다.
글수정 들어가면 주소(동)는 선택유지되어 나오는데, 아파트이름(타이틀)이 선택이 유지안되는 것이죠.
글제목 수정시 선택유지하려면 아래와 같이 하면 되는데,
<option value="녹원아파트" <getTitleText">!--@if($oDocument->getTitleText() && $oDocument->getTitleText()=='녹원아파트')-->selected="selected"<>녹원아파트!--@end-->>녹원아파트</option>
아파트이름 옵션값들이 자바스크립트를 통해 자동 생성되다보니 위 형식은 불가능하네요.
암튼 신경써주셔서 감사합니다.
혹시 나중에라도 해결책이 떠오르시면 도와주세요 -
jjabez
2011.05.04 03:40
(글등록이 이상하게 잘리네요)
라르게덴님 답변 감사합니다. 해결은 아직 못했습니다.
자바 스크립트코드는 먼저 쓴 내용대로이고, 글쓰기 write_form.html 의 해당코드는 다음과 같습니다.
<div class="Dong"> // 확장변수 3
{@ $key = 3}
{@ $val = $extra_keys[$key]}
{$val->getFormHTML()}
</div>
<div class="AptName"> // 타이틀
<select name="title" id="title">
<option value="">아파트선택</option>
</select>
</div>
주소(동이름)이 확장변수이고, 아파트이름이 타이틀변수입니다.
글수정 들어가면 주소(동)는 선택유지되어 나오는데, 아파트이름(타이틀)이 선택이 유지안되는 것이죠.
글제목 수정시 선택유지하려면 아래와 같이 하면 되는데,
<option value="녹원아파트" <getTitleText">!--@if($oDocument->getTitleText() && $oDocument->getTitleText()=='녹원아파트')-->selected="selected"<>녹원아파트!--@end-->>녹원아파트</option>
아파트이름 옵션값들이 자바스크립트를 통해 자동 생성되다보니 위 형식은 불가능하네요.
암튼 신경써주셔서 감사합니다.
혹시 나중에라도 해결책이 떠오르시면 도와주세요 -
라르게덴
2011.05.04 11:39
var getTitle = {$oDocument->getTitleText()};
function change(ku) {
sel=document.psm.title
/* 옵션메뉴삭제*/
for (i=sel.length-1; i>=0; i--){
sel.options[i] = null
}
/* 옵션박스추가 */
for (i=0; i < cnt[ku].length;i++){
sel.options[i] = new Option(cnt[ku][i], cnt[ku][i]);
if(sel.options[i].value==getTitle)
sel.options[i].selected = true;
}
}
그럼 이렇게해보세요. 미리 그런말씀을 하셨다면 어제 답변이 빨랐을텐데 말이죠.. ^^
/* 옵션박스추가 */
for (i=0; i < cnt[ku].length;i++){
sel.options[i] = new Option(cnt[ku][i], cnt[ku][i]);
if(sel.options[i].value=="{$oDocument->getTitleText()}")
sel.options[i].selected = true;
}
}
이렇게 하셔야 될 겁니다. 근데 함수(){}가 들어간 스크립트에는 템플릿언어를 호출하면 꼬입니다.
아래와 같이 하셔야 합니다.
<form action="./" method="post" onsubmit="return procFilter(this, insert)" id="fo_write" name="psm">
<select name='extra_vars3' onchange="change(this.selectedIndex);" class=select>
<option value=''>동선택</option>
<option value="거모동" selected="selected"|cond="$extra_vars1==$oDocument->getTitleText()">거모동</option>
<option value="논곡동" selected="selected"|cond="$extra_vars1==$oDocument->getTitleText()">논곡동</option>
....
</select>
<select name='title' class='select'>
<option>아파트명</option>
</select>
</form>
하지만 실제 사용중인 스킨은 foreach를 사용한 프로그래밍이기 때문에 그 소스에 맞게 넣어주셔야하는데요. 소스를 못보니 정확한 답변을 할수가 없네요... ㅜㅜ