//------------------------------------------select 제어 함수 모음
function select_all(ta,bool){ //모든 option 선택
if(!ta){ return; }
for(var i=0,m=ta.length;i<m;i++){
ta.options[i].selected=bool;
}
}
function select_del(ta){ //선택된 option 삭제(멀티 가능)
if(ta.selectedIndex == -1){ return; }
var ol
for(var i=ta.length-1,m=0;i>=m;i--){
if(ta.options[i].selected){
ol = ta.options[i];
ta.removeChild(ol);
}
}
ta.focus();
}
function select_copy(ta,ta2){ //선택된 option 복사(멀티 가능)
if(ta.selectedIndex == -1){ return; }
for(var i=0,m=ta.length;i<m;i++){
if(ta.options[i].selected){
var ol = ta.options[i];
var ta_ol=ol.cloneNode(true)
ta2.appendChild(ta_ol);
}
}
ta.focus();
}
function select_remove(ta,ta2){ //선택된 옵션 이동(멀티 가능)
select_copy(ta,ta2);
select_del(ta);
}
function select_updown_sel(ta,type){ //1,2,3,4(맨위,위,아래,맨아래); //선택된 option 순서 바꾸기(멀티 불가)
var sel_len = ta.length
var sel_idx = ta.selectedIndex;
if(sel_idx==-1){alert!!('대상을 선택해주세요.'); return;}
if(type<3 && sel_idx==0 ){ alert!!('대상이 맨 위에있습니다'); return; }
if(type>2 && sel_idx==(sel_len-1) ){ alert!!('대상이 맨 아래에있습니다'); return; }
switch(type){
case 1:
select_goto(ta,sel_idx,0);
break;
case 2:
select_goto(ta,sel_idx,sel_idx-1);
break;
case 3:
select_goto(ta,sel_idx,sel_idx+1);
break;
case 4:
select_goto(ta,sel_idx,(sel_len-1));
break;
}
}
function select_goto(ta,st,ed){
var ta_num =-1;
var ol,ta_ol;
if(st<0 || ed<0 || st >=ta.length || ed >=ta.length ) return;
if(st<ed){
while(st<ed){
ta_num=st+1;
ol = ta.options[st].cloneNode(true);
ta_ol = ta.options[ta_num].cloneNode(true);
ta.options[ta_num]=new Option(ol.innerHTML,ol.value,false,true);
ta.options[st]=new Option(ta_ol.innerHTML,ta_ol.value,false,false);
st=ta_num;
}
}else if(st>ed){
while(st>ed){
ta_num=st-1;
ol = ta.options[st].cloneNode(true);
ta_ol = ta.options[ta_num].cloneNode(true);
ta.options[ta_num]=new Option(ol.innerHTML,ol.value,false,true);
ta.options[st]=new Option(ta_ol.innerHTML,ta_ol.value,false,false);
st=ta_num;
}
}
}
function select_all(ta,bool){ //모든 option 선택
if(!ta){ return; }
for(var i=0,m=ta.length;i<m;i++){
ta.options[i].selected=bool;
}
}
function select_del(ta){ //선택된 option 삭제(멀티 가능)
if(ta.selectedIndex == -1){ return; }
var ol
for(var i=ta.length-1,m=0;i>=m;i--){
if(ta.options[i].selected){
ol = ta.options[i];
ta.removeChild(ol);
}
}
ta.focus();
}
function select_copy(ta,ta2){ //선택된 option 복사(멀티 가능)
if(ta.selectedIndex == -1){ return; }
for(var i=0,m=ta.length;i<m;i++){
if(ta.options[i].selected){
var ol = ta.options[i];
var ta_ol=ol.cloneNode(true)
ta2.appendChild(ta_ol);
}
}
ta.focus();
}
function select_remove(ta,ta2){ //선택된 옵션 이동(멀티 가능)
select_copy(ta,ta2);
select_del(ta);
}
function select_updown_sel(ta,type){ //1,2,3,4(맨위,위,아래,맨아래); //선택된 option 순서 바꾸기(멀티 불가)
var sel_len = ta.length
var sel_idx = ta.selectedIndex;
if(sel_idx==-1){alert!!('대상을 선택해주세요.'); return;}
if(type<3 && sel_idx==0 ){ alert!!('대상이 맨 위에있습니다'); return; }
if(type>2 && sel_idx==(sel_len-1) ){ alert!!('대상이 맨 아래에있습니다'); return; }
switch(type){
case 1:
select_goto(ta,sel_idx,0);
break;
case 2:
select_goto(ta,sel_idx,sel_idx-1);
break;
case 3:
select_goto(ta,sel_idx,sel_idx+1);
break;
case 4:
select_goto(ta,sel_idx,(sel_len-1));
break;
}
}
function select_goto(ta,st,ed){
var ta_num =-1;
var ol,ta_ol;
if(st<0 || ed<0 || st >=ta.length || ed >=ta.length ) return;
if(st<ed){
while(st<ed){
ta_num=st+1;
ol = ta.options[st].cloneNode(true);
ta_ol = ta.options[ta_num].cloneNode(true);
ta.options[ta_num]=new Option(ol.innerHTML,ol.value,false,true);
ta.options[st]=new Option(ta_ol.innerHTML,ta_ol.value,false,false);
st=ta_num;
}
}else if(st>ed){
while(st>ed){
ta_num=st-1;
ol = ta.options[st].cloneNode(true);
ta_ol = ta.options[ta_num].cloneNode(true);
ta.options[ta_num]=new Option(ol.innerHTML,ol.value,false,true);
ta.options[st]=new Option(ta_ol.innerHTML,ta_ol.value,false,false);
st=ta_num;
}
}
}
반응형
'인터넷정보' 카테고리의 다른 글
PNG24 반투명 지원법 (IE용) (0) | 2007.10.11 |
---|---|
PNG24 반투명 지원법 (IE용) (0) | 2007.10.11 |
JS 트리구조 메뉴 (0) | 2007.10.11 |
JS 트리구조 메뉴 (0) | 2007.10.11 |
select 용 함수 모음 (0) | 2007.10.11 |
UTF-8로 바꾸는 법, 문자열 인코딩 바꾸기 (0) | 2007.10.11 |
UTF-8로 바꾸는 법, 문자열 인코딩 바꾸기 (0) | 2007.10.11 |
IE7의 변경(오류,버그,바뀐점) (0) | 2007.10.11 |
IE7의 변경(오류,버그,바뀐점) (0) | 2007.10.11 |
이미지 없이 라운딩 박스 표현하기1 (0) | 2007.10.11 |