<!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>