联动下拉与选中回显效果

联动下拉与选中回显效果

  <div id="search">
  <form action="IndexServlet" method="post">
  商品搜索:  商品大类
  <select name="bigType" οnchange="change()" id="bigType">
    <option>---请选择---</option>
	   <c:forEach var="big" items="${itemTypes}">
			<!-- 取得当前大类赋给big -->
			<c:if test="${big.pid eq 0}">
				<!-- 所有的大类跟上一次对比,如果一样就选中-->
				<option value="${big.id }" ${param.bigType eq big.id ? "selected" : ""}>${big.name }</option>
			</c:if>
	   </c:forEach>
  </select>
    商品小类
  <select name="smallType" id="smallType">
    <option>---请选择---</option>
  </select>
    关键字【商品名称】<input name="name" type="text" value="${param.name }">
  <input type="submit" value="" class="search_btn"/>
  </form>
  </div>

联动下拉脚本

<script type="text/javascript">

	//方法名为$(id),主要为了模拟jquery,也为了调用方便
   	function $(id){
   		//返回该对象
   		return document.getElementById(id);
   	}
   	
   	function openMyWin(img){
   		
   	}

	function display(id){
		//当不显示时就显示,动态的只能用document对象获取id
		if($(id).style.display == "none"){
			$(id).style.display = "";
		}else{
			$(id).style.display = "none"
		}
	}
	
	var arr = new Array();
	var i = 0;
	//把el表达式存放在js的数组中,才能跟js比较,这里可以先判读过滤掉大类
	//过滤掉大类,有多个值用数组存储
	//这种方式好,只读取一次数据库
	<c:forEach var="small" items="${itemTypes}">
		//数组里再放数组,即二位数组
		arr[i] = new Array(${small.id},"${small.name}",${small.pid});
		i++;
	</c:forEach>
	
	function change(){
		//第一种:清除只剩下1个,该显示为请选择
		//第二种:判断如果是大类为请选择,小类就为请选择
		//后面的就不要执行了,也是一样的,不过还是第一种方便
		smallType.length = 1;
		for(var i = 0 ; i < arr.length ; i++){
			//数组中的pid等于大类的id
			if(arr[i][2] == bigType.value){
				var op = document.createElement("option");
				op.value = arr[i][0];
				op.text = arr[i][1];
				smallType.appendChild(op);
				//上一次的小类跟所有的对比,如果一样则选中
				if(op.value == "${param.smallType}"){
					//这种也可以的
					//op.selected = "selected";
					op.selected = true;
				}
				
				//以对象的方式添加option也可以
				//var op  = new Option(arr[i][1],arr[i][0]);
				//smallType.appendChild(op);
			}
		}
	}
</script>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值