当前位置: 代码迷 >> Web前端 >> select 二个联动
  详细解决方案

select 二个联动

热度:113   发布时间:2012-10-24 14:15:58.0
select 2个联动

1.js

?

 //id|->{s1;[]}
var dicObject = new ActiveXObject("Scripting.Dictionary");
//id|->s1
var dicId = new ActiveXObject("Scripting.Dictionary");

//id中2:->se1  ..dicSon
var dicRele = new ActiveXObject("Scripting.Dictionary");
//空dic
var dicNull = new ActiveXObject("Scripting.Dictionary");
//将array[Dictionary] 显示到 select中
function toOption(selectId,tempDic,valueChecked){
	var select = document.getElementById(selectId);
	var array = (new VBArray(tempDic.Keys())).toArray();
	var count = array.length;
	for(var i=0;i<count;i++){
		var obj = document.createElement("OPTION");
		obj.value = array[i];
		obj.text = tempDic(array[i]);
		if(array[i]==valueChecked)obj.selected = "selected";
		select.add(obj);
	}
}
//清空select中的option
function removeOption(select){
	var count = select.options.length;
	for(var i=count-1;i>=0;i--){
		select.options.remove(i);
	}
}
//去掉两边的括号如[xxxx]--->xxxx
function removeBrackets(string){
	var seltemp = string.slice(1,string.length-1);//去掉[]
	return seltemp;
}
//分离出 Object 到 array
function separateObject(string){
	var arrsuper = string.split(",");      //每个对象一个项
	return arrsuper;
}





//id|->{s1;[]}  dicObject      ---调用
function getDicObject(array){
	var count = array.length;
	for(var i=0;i<count;i++){
		var arrString = array[i];   //每一项对象
		var arrsuper = arrString.split("|->");
		var index = arrsuper.length;
		if(index>=2)      //id        后面
			dicObject.add(trem(arrsuper[0]),trem(arrsuper[1]));
		else if(index==1)
			dicObject(trem(arrsuper[0]),"");
	}
}
//id|->s1                         ---显示
function getDicId(array){
	var count = array.length;
	for(var i=0;i<count;i++){
		var arrString = array[i];   //每一项对象
		var arrsuper = arrString.split("|->");
		if(arrsuper.length<1)continue;
		var temp = removeBrackets(arrsuper[1]);
		var temparr = temp.split(";");
		if(temparr.length>0)dicId.add(trem(arrsuper[0]),trem(temparr[0]));
	}
}
//id|->{s1;[]}中2:->se1   array={s1;[2:->se1#1:->se1#]}  ---调用
function getDicSon(string){
		//id|->{s1;[]}中2:->se1
		var dicSon = new ActiveXObject("Scripting.Dictionary");
		var temp = removeBrackets(string);
		
		var temparr = temp.split(";");
		if(temparr.length<2)return;
		
		var newtemp = removeBrackets(temparr[1]); //son object
		var newtemparr = newtemp.split("#");
		var newcount = newtemparr.length;
		
		for(var j=0;j<newcount;j++){
			var newarrString = newtemparr[j];   //每一项对象的集合
			var newarrsuper = newarrString.split(":->");
			if(newarrsuper.length<1)continue;
			if(newarrsuper.length>1)dicSon.add(trem(newarrsuper[0]),trem(newarrsuper[1]));
		}
		return dicSon;
}
//id中2:->se1  ..dicSon
function getDicRele(array){
	if(dicObject.Count<1)getDicObject(array);
	var dicObjectKeys = (new VBArray(dicObject.Keys())).toArray();
	var count = dicObjectKeys.length;
	for(var i=0;i<count;i++){
		var arrString = dicObject(trem(dicObjectKeys[i]));   //value
		var sonDic = getDicSon(arrString);
		dicRele.add(trem(dicObjectKeys[i]),sonDic);
	}
}
//

function showAll(selectValue,se1,se2){
	var string = removeBrackets(list);
	var array = separateObject(string);  //object
	if(selectValue==null||trem(selectValue)==""){
		getDicId(array);
		getDicRele(array);
		var a = (new VBArray(dicRele.Items())).toArray();
		toOption(se1,dicId);
		toOption(se2,a[0]);
	}else{
		removeOption(document.getElementById(se1));
		removeOption(document.getElementById(se2));
		toOption(se1,dicId,selectValue);
		toOption(se2,dicRele(trem(selectValue)));
	}
	
}

function selectOnChange(tag,se1,se2){
	var value = tag.value;
	showAll(value,se1,se2);
}
//去掉空格(两边)
function trem(str){
	var str1 = rtrem(str);
	var string = ltrem(str1);
	return string;
}
//去掉左边空格
function ltrem(str){
	var count = str.length;
	var seltemp = "";
	for(var i=0;i<count;i++){
		var s = str.charAt(i);
		if(s!=" "){seltemp = str.slice(i,count);break;}
	}
	return seltemp;
}
//去掉右边空格
function rtrem(str){
	var count = str.length;
	var seltemp = "";
	for(var i=count-1;i>=0;i--){
		var s = str.charAt(i);
		if(s!=" "){seltemp = str.slice(0,i+1);break;}
	}
	return seltemp;
}

?

2.html

?

<script type="text/javascript"  src="select/select2.js"></script>
<script type="text/javascript">
                list = "${list}";
	function onload(){
                     showAll(null,"se1","se2");
	}
</script>

......
<body onload="onload()">
......

 <select id="se1"  onchange="selectOnChange(this,'se1','se2')">
  </select>
  <select id="se2">
  </select>

?

3.java---显示的

public class SelectEntity {
	private Integer id;
	private String name;
	private Set<SelectEntity>  selectEntity;


。。。
@Override
	public String toString() {
		// TODO Auto-generated method stub
		String str = "";
		str += this.id+"|->{"+this.name+";[";
		for(SelectEntity se:this.selectEntity){
			str += se.getId()+":->";
			str += se.name;
			str += "#";
		}
		str += "]}";
		return str;
	}

?类

?

?

?

?

  相关解决方案