테스트 사이트 - 개발 중인 베타 버전입니다

수정시 셀렉트가 초기화 됩니다. 채택완료

꽁치입니다 4년 전 조회 4,104

</p>

<p> </p>

<p><?php

 $write['wr_1'] = $menu1;

?></p>

<p> <select name='wr_1' id='menu1' OnChange='javascript:getCataAllId(1)' required class="form-select">

       <option value='<?=$write['wr_1']?>' <?=($write['wr_1']=='' )? 'selected':'';?>> 선택하세요 </option>

 </select>


입력하고 저장하면, DB에 저장은 잘 되는데, 수정 하려면 초기화 됩니다.

아무리 봐도 이상이 없는듯 한데... 어디가 잘못됐는지...ㅠㅠ

도와주세요.. 고수님..

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

굿보이3
4년 전

다른 옵션 부분이 javascript 로 채워지는것 같은데 그부분을 확인하셔야 할것 같네요

보내주신 소스로는 정확히 파악이 어렵습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

꽁치입니다
4년 전
다른 javascript 옵션은

OnChange='javascript:getCataAllId(1)' 이거인데요..

이 코드는 다른 테이블 불러와서 DB 연동한 다중 셀렉터 입니다.

[code]

<?php
$wr_1 = $menu1; $wr_2 = $menu2; $wr_subject = $menu3; $wr_4 = $menu4;
for ($i=0; $row = sql_fetch_array($result); $i++) {
$nm[$i] = $row['wr_1'].'|1|'.$row['wr_2'].'|2|'.$row['wr_subject'].'|3|'.$row['wr_4'].'|4|';
?>


<script type="text/javascript">
function getCataAllId(cmd){
cmd = eval(cmd);
cmd2 = cmd +1;
initCataID(cmd);
var ch = "";
for(var idx = 1; idx < cmd2; idx++){
ch = ch + eval("document.fwrite.menu"+idx+".value") + "|"+idx+"|";
}
var v = 0;
var temp = "";
var tempv = "";
var arg = "";
for(var m = 0; m < menuArr.length; m ++) {
arg = menuArr[m].substring(menuArr[m].indexOf("|"+cmd+"|")+3,menuArr[m].indexOf("|"+cmd2+"|")) ;
temp = menuArr[m].substring(0, menuArr[m].indexOf("|"+cmd+"|")+3);
if(temp == ch && tempv != arg ){
v++;
eval("document.fwrite.menu"+cmd2+".length = document.fwrite.menu"+cmd2+".length + 1");
eval("document.fwrite.menu"+cmd2+".options["+v+"].value = arg ");
eval("document.fwrite.menu"+cmd2+".options["+v+"].text = arg ");
}
if(temp != ch){
tempv = "";
}else{
tempv = menuArr[m].substring(menuArr[m].indexOf("|"+cmd+"|")+3,menuArr[m].indexOf("|"+cmd2+"|"));
}
}
}

function initCataID(cmd){
cmd = eval(cmd);
if(cmd == 1){
document.fwrite.menu2.length = 1;
document.fwrite.menu3.length = 1;
document.fwrite.menu4.length = 1;
document.fwrite.menu2.selectedIndex = 0;
document.fwrite.menu3.selectedIndex = 0;
document.fwrite.menu4.selectedIndex = 0;
}
if(cmd == 2){
document.fwrite.menu3.length = 1;
document.fwrite.menu4.length = 1;
document.fwrite.menu3.selectedIndex = 0;
document.fwrite.menu4.selectedIndex = 0;
}
if(cmd == 3){
document.fwrite.menu4.length = 1;
document.fwrite.menu4.selectedIndex = 0;
}
}


</script>


<form name="fwrite" id="fwrite" action="<?php echo $action_url ?>" onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off" role="form" class="form">

<select name='wr_1' id='menu1' OnChange='javascript:getCataAllId(1)' required class="form-select">
<option value='<?=$write['wr_1']?>' <?php if($write['wr_1'] == '' )? 'selected':'';?>> 선택하세요 </option>
</select>
.
.
.
.
.

</form>


<script type="text/javascript">
/* JSON encode, parse */
var stuff = <?php echo json_encode($nm); ?>;
var str = JSON.stringify(stuff);
var menuArr = new Array();
menuArr= JSON.parse(str);
var z1 = 0;
var temp1 = 0;
initCataID(1);
for(var m = 0; m < menuArr.length; m ++) {
if ( menuArr[m].substring(0, menuArr[m].indexOf("|1|")) != temp1 ){
document.fwrite.menu1.length = document.fwrite.menu1.length + 1;
document.fwrite.menu1.options[z1+1].value = menuArr[m].substring(0, menuArr[m].indexOf("|1|")) ;
document.fwrite.menu1.options[z1+1].text = menuArr[m].substring(0, menuArr[m].indexOf("|1|")) ;
temp1 = menuArr[m].substring(0, menuArr[m].indexOf("|1|"));
z1++;
}
/* index 1에 중복 제거입니다. */
}



function gotomenu()
{
location.href = '#';
}
</script>
[/code]


이겁니다.

댓글을 작성하려면 로그인이 필요합니다.

팬텀디자인

다른 option 태그는 없는건가요?

 

위 코드만으로 봤을 때는 중간에 if문이 빠진 것 밖에 안보입니다.

 

</p>

<pre>
<code><?php
 $write['wr_1'] = $menu1;
?>
 <select name='wr_1' id='menu1' OnChange='javascript:getCataAllId(1)' required class="form-select">
       <option value='<?=$write['wr_1']?>' <?php if($write['wr_1'] == '' )? 'selected':'';?>> 선택하세요 </option>
 </select></code>
</pre>

<p><code>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

꽁치입니다
4년 전
답변 감사합니다.

적용해 봤으나, 에러납니다. 페이지가 깨져 버리네요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인