<!DOCTYPE html> <html> <head> <title>选择框,移动和重排选项</title> <script type="text/javascript" src="js/EventUtil.js"></script> </head> <body> <form> <select id="selLocations1" size="5" multiple="multiple" > <option value="Sunnyvale, CA">0_Sunnyvale</option> <option value="Los Angeles, CA">1_Los Angeles</option> <option value="Mountain View, CA">2_Mountain View</option> <option value="">3_China</option> <option>4_Australia</option> </select> <select id="selLocations2" size="5" multiple="multiple"></select> <p> 单击按钮,把当前选中项移动到其他选择框: <br> <input type="button" value=">>" id="btnMoveLeft"> <input type="button" value="<<" id="btnMoveRight"> </p> </form> <script type="text/javascript"> (function(){ var btnMoveLeft = document.getElementById("btnMoveLeft"), btnMoveRight = document.getElementById("btnMoveRight"), selectbox1 = document.getElementById("selLocations1"), selectbox2 = document.getElementById("selLocations2"), textbox = document.getElementById("txtIndex"), result = new Array, option = null, selectedIndexRight = 0, selectedIndexLeft = 0; /* 获取选中项的值 */ function getItemMessage(){ var message = ""; for( var j = 0, jlen = result.length; j < jlen; j++ ){ message += "选项索引:" + result[j].index + ",\n选项文本:" + result[j].text + ",\n选项的值:" + result[j].value + ";\n\n" } console.log( message ); } /* 获取选中项的值end */
/* 获取右侧选择框选中项索引 */ EventUtil.addHandler( selectbox2 , "change" ,function(even){ event = EventUtil.getEvent( event ); var target = EventUtil.getTarget( event ); selectedIndexRight = target.selectedIndex; //console.log("右侧选择框事件查询的选中项:" + selectedIndexRight ); }); /* 获取右侧选择框选中项索引end */
/* 获取左侧选择框选中项索引 */ EventUtil.addHandler( selectbox1 , "change" ,function(even){ event = EventUtil.getEvent( event ); var target = EventUtil.getTarget( event ); selectedIndexLeft = target.selectedIndex; //console.log("左侧选择框事件查询的选中项:" + selectedIndexLeft ); }); /* 获取左侧选择框选中项索引end */ /* 移动选中项 */ function moveOptionItem( target ){ for( var i = 0, len = result.length; i < len; i++ ){ if( target.id == "btnMoveLeft" ){ //selectbox2.appendChild( result[i] ); //添加到右侧选择框的最后面 //selectbox2.insertBefore( result[i] , selectbox2.options[result[i].index -1] ); //添加到右侧选择框,并向前移动一个选项的位置 //selectbox2.insertBefore( result[i] , selectbox2.options[result[i].index + 2] ); //添加到右侧选择框,并向后移动一个选项的位置 selectbox2.insertBefore( result[i] , selectbox2.options[ selectedIndexRight] ); //把左侧选中项,添加到右侧指定位置 }else if ( target.id == "btnMoveRight" ){ //selectbox1.appendChild( result[i] ); //添加到左侧选择框的最后面 //selectbox1.insertBefore( result[i] , selectbox1.options[result[i].index -1] ); //添加到左侧选择框,并向前移动一个选项的位置 //selectbox1.insertBefore( result[i] , selectbox1.options[result[i].index + 2] ); //添加到左侧选择框,并向后移动一个选项的位置 selectbox1.insertBefore( result[i] ,selectbox1.options[ selectedIndexLeft] ); //把右侧选中项,添加到左侧指定位置 } } result = []; } /* 移动选中项end */ /* >> 按钮事件 */ EventUtil.addHandler(btnMoveLeft, "click", function(event){ event = EventUtil.getEvent( event ); var target = EventUtil.getTarget( event ); for( var i = 0, len = selectbox1.options.length; i < len; i++ ){ option = selectbox1.options[i]; if( option.selected ){ result.push( option ); } } //getItemMessage(); //获取选中项的值 moveOptionItem( target ); //向右移动选中项 }); /* >> 按钮事件end */ /* << 按钮事件 */ EventUtil.addHandler(btnMoveRight, "click", function(event){ event = EventUtil.getEvent( event ); var target = EventUtil.getTarget( event ); for( var i = 0, len = selectbox2.options.length; i < len; i++ ){ option = selectbox2.options[i]; if( option.selected ){ result.push( option ); } } //getItemMessage(); //获取选中项的值 moveOptionItem(target ); //向左移动选中项 }); /* << 按钮事件end */ })(); </script> </body> </html>