zoukankan      html  css  js  c++  java
  • 利用jquery.chained.remote实现多级级联

    多级级联一直是前端比较烦人的一个功能,本次用jquery的插件,chained.remote实现多级级联。

    应用场景:至少有二个下拉框,下拉框的个数不定。

    应用步骤:

    1.引入js文件,当然这个插件需要自己去下载。

    <!-- 多级联动 -->
    <script type="text/javascript" src="./static/js/jquery.chained.remote.min.js"></script>

    2.两个下拉框

                               
    <!--第一个下拉框-->
    <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6" style="padding-bottom: 2px"> <div class="input-group input-group-sm"> <span class="input-group-addon">材料/产品</span> <select class="form-control" name="categoryType" id="categoryType" onchange="setParm(this.name, this.value)"> <option value="">所有</option> <option value="0"><c:if test='${pm.categoryType==1}'>selected</c:if>材料 </option> <option value="1"><c:if test='${pm.categoryType==2}'>selected</c:if>产品 </option> </select> </div> </div>
    <!--第二个下拉框-->
    <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6" style="padding-bottom: 2px"> <div class="input-group input-group-sm"> <span class="input-group-addon">父级类别</span> <SELECT class="form-control" name="parentCategoryId" id="parentCategoryId" onchange="setParm(this.name, this.value)"> <OPTION value="">请选择</OPTION> </SELECT> </div> </div>

    我想实现的是选择第一个下拉框的材料或者产品的时候,会导致第二个下拉框显示不同的内容。注意第一个下拉框的id是categoryType,第二个下拉框的id是parentCategoryId.

    3.写入如下js代码

    $(function() {
            //二级联动
            $("#parentCategoryId").remoteChained("#categoryType", "parentCategoryListByCategoryType");
    
        });
    parentCategoryIdcategoryType分别对应第二个和第一个下拉框的id,parentCategoryListByCategoryType是ajax获取数据的url。
    4.接下来就是编写parentCategoryListByCategoryType的代码。
    @ResponseBody
        @RequestMapping("parentCategoryListByCategoryType")
        public String parentCategoryListByCategoryType(int categoryType) {
            JSONObject jsonObject = categoryService
                    .getRootCategoryListByCategoryType(categoryType);
            return jsonObject.toString();
        }
    
    
    public JSONObject getRootCategoryListByCategoryType(int categoryType){
            try {
                List<TCategory>rootCategoryList=baseDao.findTListByParam("TCategoryMapper.selectRootCategoryByCategoryType", categoryType);
                JSONObject jsonObject=new JSONObject();
                for(TCategory category:rootCategoryList){
                    jsonObject.put(category.getCategoryId().toString(), category.getCategoryName());
                }
                return jsonObject;
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
            
        }
        <select id="selectRootCategoryByCategoryType" resultMap="BaseResultMap"
            parameterType="java.lang.Integer">
            select
            <include refid="Base_Column_List" />
            from t_category
            where is_del=0 and is_root=1
            <if test="categoryId!=0">
                and
                category_type=#{categoryId,jdbcType=INTEGER}
            </if>
            order by sort_num
        </select>

    可以看到我们取得的数据是json格式的。这样便完成了二级级联的效果,多级级联只要在这个基础上按同样的方法做就可以了。

    PS:应用的框架是ssm.

     
     
  • 相关阅读:
    Linux w命令
    01.drf文档及外键字段反序列化
    redis的参数解释
    redis集群复制和故障转移
    codis原理及部署_01
    redis 主从哨兵02
    redis 主从哨兵01
    redis持久化
    redis python操作
    redis cluster
  • 原文地址:https://www.cnblogs.com/roy-blog/p/7055057.html
Copyright © 2011-2022 走看看