如何通过jQuery实现select下拉框的联动效果

        由于项目需要,小编需要实现三个HTML的select下拉框联动的效果,如果考虑到实际用户体验的话,直接用异步刷新的方式操作DOM是最好的选择,这里小编直接使用了jQuery作为DOM操作的工具,直接操作,完成了对于下拉框的操作,下面是实现方法:


一、页面效果


        如图,有这么两个下拉框,当选择上面的类型的时候,下面的动物种类就会跟着去变化:

这里是牛的分类这里是羊的分类

        然后,我们来看一下JSP页面的select代码

<div class="form-group">
      <label for="packType" class="col-sm-3 control-label">所属类型:</label>
      <div class="col-sm-4">                            
            <select id="packType" name="packType" class="form-control">
		<option value="0">请选择</option>
		<option value="1" <c:if test="${cmnPack.packType == 1}">selected="selected"</c:if>>宠物羊</option>
		<option value="2" <c:if test="${cmnPack.packType == 2}">selected="selected"</c:if>>宠物牛</option>
	    </select>
     </div>
</div>
这个是类型选择的

<div class="form-group">
   <label for="animalClassifyId" class="col-sm-3 control-label">动物分类:</label>
   <div class="col-sm-4">
       <select id="animalClassifyId" name="animalClassifyId" class="form-control input-150 input-sm" placeholder="动物分类">
               <option value="">选择动物分类</option>
               <c:if test="${classify != null}">
			<c:forEach items="${classify}" var="c"><option value="${c.animalClassifyId}" <c:if test="${cmnPack.packType == c.animalClassifyId}">selected="selected"</c:if>>${c.classifyName}</option></c:forEach>
		</c:if>
	</select>
   </div>
</div>
这个是动物分类的

二、JS代码实现


        由于我们的整个事件触发点是类型的选取,所以我在网上查了查关于select的改变选项的事件,于是发现了change这个事件,那么我们就以这个为起点来展示一下实现的过程:

      1、首先,我们看到了选择类型的select的ID是packType,所以我们需要在document的ready里面给这个select写入一个触发事件:

     先上全部的代码:

$(document).ready(function() {
$("#packType").bind("change",function(){
        var typeId = $(this).val();        
        var url = BASE_URL + "/back/cmnPack/findClassifyByType";
        $.post(url,{"typeId":typeId},function(rd){
            if(rd==undefined){
                layer.msg("未查询到动物分类数据!");
            }else{
            	empty_animalClassify();
            	empty_manageFee();
            	$('.price').text('');
            	//input框清空
            	$("#appointDiscount").val("");
            	var dataObj=eval("("+rd+")");//转换为json对象 
            	for(var i=0;i<dataObj.length;i++){
            		//更新羊的分类
            		var animalClassifyId=dataObj[i].animalClassifyId;
            		var classifyName=dataObj[i].classifyName;
            		$("#animalClassifyId").append("<option value='"+animalClassifyId+"'>"+classifyName+"</option>");
            	}                
            }
        })        
});
}

     2、我们通过这个触发事件,先获得我们的分类ID:

var typeId = $(this).val();
然后通过Ajax的方法,把这个ID传入到后台去取我们需要更新的数据,也就是这个jQuery带的Ajax代码:

$.post(url,{"typeId":typeId},function(rd){
注意:URL里面的BASE_URL是我们在common.js中定义的静态变量。

     3、获得到数据之后,我们需要先进行动物分类的select的清空操作,empty_animalClassify();这个方法就是清空用的,具体代码如下:

function empty_animalClassify(){
	$("#animalClassifyId").empty();
	$("#animalClassifyId").append("<option value=''>选择动物分类</option>");
}

     4、获得到数据之后,经过简单的判断,我们可以对于回传的json数据进行解析了方法就是用的eval对于回传的数据先对象化,然后进行对象的操作:

var dataObj=eval("("+rd+")");//转换为json对象 
     for(var i=0;i<dataObj.length;i++){
        //更新羊的分类
        var animalClassifyId=dataObj[i].animalClassifyId;
        var classifyName=dataObj[i].classifyName;
        $("#animalClassifyId").append("<option value='"+animalClassifyId+"'>"+classifyName+"</option>");
} 
       其中animalClassifyId为动物分类的select框的ID,我们在这里给他动态添加选项,也就是option,这样之后,我们的动态联动也就做好了。


需要思考的:

      其实经历了这次的探索,让我对于jQuery有了新的认识,因为基本所有的操作,包括添加属性,取值,改属性,都可以通过它来完成,并且经过在网上查阅,还看到了同样的绑定有不同的写法,这一点是很灵活的,所以下一篇博客我将重点分析一下jQuery对于一个对象的属性添加,赋值等操作的不同方法,以及各有什么好处。







  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
实现select下拉框的三级联动,可以通过Ajax和JQuery实现。具体步骤如下: 1.在页面中定义三个select下拉框,并且为它们分别定义id。 ``` <select id="province"></select> <select id="city"></select> <select id="district"></select> ``` 2.编写ajax请求,获取省份数据,填充省份下拉框。 ``` $.ajax({ url: "getProvinceList", type: "GET", dataType: "json", success: function(data){ var options = "<option value=''>--请选择--</option>"; for(var i=0; i<data.length; i++){ options += "<option value='" + data[i].id + "'>" + data[i].name + "</option>"; } $("#province").html(options); } }); ``` 3.为省份下拉框绑定change事件,当选择省份时,发送ajax请求获取该省份的城市数据,填充城市下拉框。 ``` $("#province").change(function(){ var provinceId = $(this).val(); $.ajax({ url: "getCityList", type: "GET", dataType: "json", data: {"provinceId":provinceId}, success: function(data){ var options = "<option value=''>--请选择--</option>"; for(var i=0; i<data.length; i++){ options += "<option value='" + data[i].id + "'>" + data[i].name + "</option>"; } $("#city").html(options); } }); }); ``` 4.为城市下拉框绑定change事件,当选择城市时,发送ajax请求获取该城市的区/县数据,填充区/县下拉框。 ``` $("#city").change(function(){ var cityId = $(this).val(); $.ajax({ url: "getDistrictList", type: "GET", dataType: "json", data: {"cityId":cityId}, success: function(data){ var options = "<option value=''>--请选择--</option>"; for(var i=0; i<data.length; i++){ options += "<option value='" + data[i].id + "'>" + data[i].name + "</option>"; } $("#district").html(options); } }); }); ``` 以上就是基于Ajax、JQuery实现select下拉框三级联动的步骤。需要注意的是,需要编写后台代码来获取省份、城市、区/县的数据,并返回给前台。另外,需要在页面中引入JQuery库。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值