jquery实现四级级联下拉列表

开发环境

  • jdk 1.7 tomcat7
  • jquery-1.10
  • 数据结构为单表通过parentid架构数据子父级关系

实现过程

  • 通过ajax异步获取下拉列表的数据
intiSelect: function(parentCode){
   var result;
   $.ajax({
       url: _path,
       data: {"parentCode": parentCode},
       type: "post",
       dataType: "json",
       async: false,
       success: function (data) {
           result = data.myarray;
       }, error: function (data) {
           //console.log(data);
       }
   });
   return result;
}
  • 将数据整合后显示在对应的下拉列表中;并添加change事件,实现级联效果
eventBind: function () {
    var that = this;
	//第一个下拉列表的父id为约定好的值
    var data = that.intiSelect('0');
    //console.log(data);//打印通过intiSelect方法获取的数据
    var tempHtml = "<option value=\"\">请选择</option>";
    if(data != null && data != ""){
        for (var i = 0; i < data.length; i++) {
            tempHtml += "<option value=\""+data[i].dropDownCode+"\">"+data[i].dropDownName+"</option>";
        }
    }
    //为第一个下拉列表添加html元素
    $("select[name='one']").html(tempHtml);
    //添加select的change事件
    $("select[name='one']").unbind('change').change(function (){
    	//触发第二个下拉列表的change事件,达到级联的效果
       that.secondChange($("select[name='one']").val(),'two','three','four');
    });
    });
},
secondChange: function(parentCode,name,sonName,sunzi){
    var that = this;
    $("select[name='"+name+"']").unbind('change').change(function (){
        //console.log("threeChange");
        that.threeChange($("select[name='"+name+"']").val(),sonName,sunzi);
    });
    if("" == parentCode){
        //清空
        $("select[name='"+name+"']").html("");
    }else{
        var data = this.intiSelect(parentCode);
        var tempHtml = "<option value=\"\">请选择</option>";
        if(data != null && data != ""){
            for (var i = 0; i < data.length; i++) {
                tempHtml += "<option value=\""+data[i].dropDownCode+"\">"+data[i].dropDownName+"</option>";
            }
        }
        $("select[name='"+name+"']").html(tempHtml);
    }
}
总结
整体的思路就是通过第一个下拉列表的change事件触发下一个下拉列表的change事件,直至最后一个下拉列表;除了最后一个和第一个下拉列表,其他下拉列表的处理可以抽成公共方法;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
三级级联下拉菜单可以通过Jquery+Ajax实现,以下是一个简单的示例代码: HTML代码: ```html <select id="province"> <option value="">请选择省份</option> <option value="北京">北京</option> <option value="上海">上海</option> <option value="广东">广东</option> </select> <select id="city"> <option value="">请选择城市</option> </select> <select id="district"> <option value="">请选择区县</option> </select> ``` Jquery+Ajax代码: ```javascript $(document).ready(function() { // 加载省份列表 $.ajax({ type: "GET", url: "province.php", success: function(data) { $("#province").append(data); } }); // 省份选项改变时,加载城市列表 $("#province").change(function() { var province = $(this).val(); $("#city").html("<option value=''>请选择城市</option>"); $("#district").html("<option value=''>请选择区县</option>"); if (province != "") { $.ajax({ type: "GET", url: "city.php", data: {"province": province}, success: function(data) { $("#city").append(data); } }); } }); // 城市选项改变时,加载区县列表 $("#city").change(function() { var province = $("#province").val(); var city = $(this).val(); $("#district").html("<option value=''>请选择区县</option>"); if (city != "") { $.ajax({ type: "GET", url: "district.php", data: {"province": province, "city": city}, success: function(data) { $("#district").append(data); } }); } }); }); ``` 在省份、城市、区县列表对应的php文件中,需要根据传入的参数返回对应的选项列表。例如,city.php文件可能如下所示: ```php $province = $_GET["province"]; echo "<option value=''>请选择城市</option>"; if ($province == "北京") { echo "<option value='北京市'>北京市</option>"; } else if ($province == "上海") { echo "<option value='上海市'>上海市</option>"; } else if ($province == "广东") { echo "<option value='广州市'>广州市</option>"; echo "<option value='深圳市'>深圳市</option>"; echo "<option value='珠海市'>珠海市</option>"; } ``` 类似地,district.php文件也需要根据传入的参数返回对应的选项列表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值