셀렉트박스 글수정시 값 고정...
본문
<?php
include_once('./_common.php');
$sql = " select * from client_list ";
$res = sql_query($sql);
for ($i=0; $row = sql_fetch_array($res); $i++) {
$nm[$i] = $row['client_id'].'|1|'.$row['client_ch'].'|2|'.$row['client_category'].'|3|'.$row['client_gubun'].'|4|';
}
?>
<HTML>
<HEAD>
<TITLE> menu 동적 할당 </TITLE>
<style>
.select1 {height:20px;width:80px;}
.select2 {height:20px;width:120px;}
.select3 {height:20px;width:150px;}
.select4 {height:20px;width:200px;}
</style>
<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.f1.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.f1.menu"+cmd2+".length = document.f1.menu"+cmd2+".length + 1");
eval("document.f1.menu"+cmd2+".options["+v+"].value = arg ");
eval("document.f1.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.f1.menu2.length = 1;
document.f1.menu3.length = 1;
document.f1.menu4.length = 1;
document.f1.menu2.selectedIndex = 0;
document.f1.menu3.selectedIndex = 0;
document.f1.menu4.selectedIndex = 0;
}
if(cmd == 2){
document.f1.menu3.length = 1;
document.f1.menu4.length = 1;
document.f1.menu3.selectedIndex = 0;
document.f1.menu4.selectedIndex = 0;
}
if(cmd == 3){
document.f1.menu4.length = 1;
document.f1.menu4.selectedIndex = 0;
}
}
</script>
</HEAD>
<BODY>
<form name = 'f1' >
<select name = 'menu1' id='menu1' OnChange='javascript:getCataAllId(1)' class="select1">
<option value="" selected>선택하세요.</option>
</select>
<select name = 'menu2' id='menu2' OnChange='javascript:getCataAllId(2)' class="select2">
<option value="" selected>선택하세요.</option>
</select>
<select name = 'menu3' id='menu3' OnChange='javascript:getCataAllId(3)' class="select3">
<option value="" selected>선택하세요.</option>
</select>
<select name = 'menu4' id='menu4' OnChange='javascript:gotomenu()' class="select4">
<option value="" selected>선택하세요.</option>
</select>
</form>
<p></p>
<font size = 2>
</font>
<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.f1.menu1.length = document.f1.menu1.length + 1;
document.f1.menu1.options[z1+1].value = menuArr[m].substring(0, menuArr[m].indexOf("|1|")) ;
document.f1.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>
</BODY>
</HTML>
다른분들이 작업해주신거 떠다가 사용할려고 하는데...
문제는 글 수정시에 값이 날라간다는 점입니다 ㅜㅜ
도움 부탁드립니다 ㅜ
답변 1
이래서 남의 소스 쓰시면....
아래 참고하세요.
<script>
function setRadio( obj, val ) {
var cnt = obj.length;
for( ii = 0; ii < cnt; ii++ ) {
if( obj[ii].value == val ) { obj[ii].checked = true; return true;; }
}
//return false; 아래의 이유 에러를 체크하기 위해서는 스크립트 오류를 일으키는 것이 더 좋다. 값세팅에 실패하면 알럿을 부르지 말고 에러를 일으켜라
return undefined_value_for_error_check;
}
</script>
<input type="radio" name="rarara" value="1">-1
<input type="radio" name="rarara" value="2">-2
<script>
setRadio( document.getElementsByName("rarara"), "2" );
</script>