• 动态生成级联下拉框和多选框


    需求:选中一级分类下拉框,动态生成二级分类下拉框,选中二级分类下拉框动态列出三级分类的多选框,提交之后保存详细描述内容

     1.创建数据库表格,添加数据(此处添加数据sql省略)

    CREATE TABLE `t_edit_details` (
      `id` int(19) NOT NULL AUTO_INCREMENT,
      `is_rzh` varchar(1) DEFAULT '0' COMMENT '是否已认证,0:否,1:是,默认0',
      `onename` varchar(100) NOT NULL COMMENT '一级菜单描述',
      `twoname` varchar(100) NOT NULL COMMENT '二级菜单描述',
      `details` varchar(255) DEFAULT NULL COMMENT '详细描述',
      `attr1` varchar(255) DEFAULT NULL COMMENT '备用字段1',
      `attr2` varchar(255) DEFAULT NULL COMMENT '备用字段2',
      `attr3` varchar(255) DEFAULT NULL COMMENT '备用字段3',
      `attr4` varchar(255) DEFAULT NULL COMMENT '备用字段4',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=1248 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='事后编辑原因表';

    2.页面代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title></title>
        <%@include file="/jsp/public/commons.jsp" %>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      </head>
      <body>
          <form name="addForm" id="addForm" method="post" action="${prjpath}/frame/startImageEditFlows.do">
              <input type="hidden" name="barcode" id="barcode"  value="${barcode}">
              <input type="hidden" name="type" id="type"  value="${type}">
              <input type="hidden" name="voteList" id="voteList"  value="${voteList}">
            <br>
            <table width="590" border="0" align="center" cellpadding="2" cellspacing="0" class="userList">
              <tr class="row1" style="font-size:13pt;font-weight:bold;">
                <td height="50" colspan="2"  align="center" style="font-size:12pt;font-weight:bold;"></td>
              </tr>
              <!-- <tr onMouseOver="this.className='row1'"
                    onMouseOut="this.className='row2'">
                    <td style="70px;" class="title">事后编辑描述:</td>
                    <td>
                        <textarea name="reasonName" id="reasonName" style="WIDTH: 400px; height:80px;"  maxlength="500" >${reasonName}</textarea>
                    </td>
                </tr> -->
                <tr onMouseOver="this.className='row1'"
                    onMouseOut="this.className='row2'">
                    <td style="70px;" class="title">是否已认证:</td>
                    <td>
                        <select id="levelthree" name="levelthree" onchange="selectlevelone()">
                            <option value="">--请选择--</option>
                            <option value="1">已认证</option>
                            <option value="0">未认证</option>
                        </select>
                    </td>
                </tr>
                <tr onMouseOver="this.className='row1'"
                    onMouseOut="this.className='row2'">
                    <td style="70px;" class="title">事后编辑原因:</td>
                    <td>
                        <select id="levelone" name="levelone" onchange="selectleveltwo()">
                            <option value="">--请选择--</option>
                        </select>
                    </td>
                </tr>
                <tr onMouseOver="this.className='row1'"
                    onMouseOut="this.className='row2'" id="selecttwo" hidden>
                    <td style="70px;" class="title" id="selecttwo_1"></td>
                    <td id="selecttwo_2">
                        
                    </td>
                </tr>
                
                <tr onMouseOver="this.className='row1'"
                    onMouseOut="this.className='row2'">
                    <td style="70px;" class="title">补充说明:</td>
                    <td>
                        <textarea name="reasonName" id="reasonName" style="WIDTH: 400px; height:80px;"  maxlength="500" >${reasonName}</textarea>
                    </td>
                </tr>
              <tr onMouseOver="this.className='row1'" onMouseOut="this.className='row2'">
                  <td colspan="2" style="30px; height:30px; text-align:center;" >
                       <a href="javascript:formSubmit();" target="_self"><span align="absmiddle"">[提 交]</span></a>
                       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                       <a href="#" target="_self"><span align="absmiddle" onclick="javascript:clean();">[清 空]</span></a>
                </td>
              </tr>
            </table>
        </form>
      </body>
    </html>
    <script type="text/javascript">
        var queryString = document.location.search.substring(1);
          var reqParams = parseQueryString(queryString);
        function formSubmit(){
            var barcode = reqParams.barcode;
            $("#barcode").val(barcode);
            var type = reqParams.type;
            $("#type").val(type);
            var voteList = [];
            $('input:checkbox').each(function(){
                if($(this).is(':checked')==true){
                    voteList.push($(this).val());
                }
            })
            $("#voteList").val(voteList);
            var reasonName = $("#reasonName").val();
            var url = '${prjpath}/frame/startImageEditFlows.do';
            addForm.submit();
        }
        function clean(){
              $('#reasonName').val('');
              $('#levelthree').val('');
              $('#levelone').val('');
              $("#selecttwo").hide();
        }
        function selectlevelone(){
            $("#selecttwo").hide();
            var objS = document.getElementById("levelthree");
            var value = objS.options[objS.selectedIndex].value;
            var url = '${prjpath}/frame/selectlevelone.do';
            $.ajax({
                type: "post", 
                url: url,
                data: {
                    "id":value
                }, 
                success: function(message){
                    if(message.length>0){
                        $("#levelone").empty();
                        $("#levelone").append("<option value=''>--请选择--</option>");
                        for(var i=0;i<message.length;i++){
                            var item=message[i];
                            $("#levelone").append("<option value="+item.id+">"+item.name+"</option>");
                        }
                       }else {
                        $("#levelone").empty();//清空下拉框
                        $("#levelone").append("<option value=''>--请选择--</option>");
                    }
                }
            });
        }
        function selectleveltwo(){
            var objS = document.getElementById("levelone");
            var value = objS.options[objS.selectedIndex].value;
            var objT = document.getElementById("levelthree");
            var valueT = objT.options[objT.selectedIndex].value;
            var url = '${prjpath}/frame/selectleveltwo.do';
            $.ajax({
                type: "post", 
                url: url,
                data: {
                    "id":value,
                    "isrzh":valueT
                }, 
                success: function(message){
                    if(message.length>0){
                        //$("#selecttwo_2").empty();
                        var data = '';
                        for(var i=0;i<message.length;i++){
                            var item=message[i];
                            data += '<input type="checkbox" name="leveltwo" value="'+item.id+'">'+item.name;
                        }
                        $("#selecttwo_2").html(data);
                        $("#selecttwo").show();
                       }else {
    
                    }
                }
            });
        }
    </script>

    3.后台代码:

     /**
         * 展示二级菜单
         * @return
         */
        public void selectlevelone() {
            String id = request.getParameter("id");
            //response.setContentType("text/html;charset=UTF-8"); 
            response.setContentType("application/json;charset=UTF-8");
            List<TEditDetails> editDetailsList = barcodeService.selectlevelone(id);
            Map<String, String> map = new HashMap<String, String>();
            List list = new ArrayList<JSONObject>();
            String result = "";
            if(editDetailsList != null && editDetailsList.size() > 0) {
                for (TEditDetails tEditDetails : editDetailsList) {
                    if(!result.contains(tEditDetails.getOnename())) {
                        result += tEditDetails.getOnename() + ";";
                        
                        JSONObject data = new JSONObject();
                        data.put("id", tEditDetails.getId());
                        data.put("name", tEditDetails.getOnename());
                        list.add(data);
                    }
                }
            }
            try {
                response.getWriter().print(list);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        /**
         * 展示三级菜单
         * @return
         */
        public void selectleveltwo() {
            String id = request.getParameter("id");
            String isrzh = request.getParameter("isrzh");
            //response.setContentType("text/html;charset=UTF-8"); 
            response.setContentType("application/json;charset=UTF-8");
            TEditDetails editDetails = barcodeService.findEditDetailById(Long.valueOf(id));
            List<TEditDetails> editDetailsList = barcodeService.selectleveltwo(isrzh,editDetails.getOnename());
            Map<String, String> map = new HashMap<String, String>();
            List list = new ArrayList<JSONObject>();
            String result = "";
            if(editDetailsList != null && editDetailsList.size() > 0) {
                for (TEditDetails tEditDetails : editDetailsList) {
                    if(!result.contains(tEditDetails.getTwoname())) {
                        result += tEditDetails.getTwoname() + ";";
                        
                        JSONObject data = new JSONObject();
                        data.put("id", tEditDetails.getId());
                        data.put("name", tEditDetails.getTwoname());
                        list.add(data);
                    }
                }
            }
            try {
                response.getWriter().print(list);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    优先队列(堆)
    从CPU管理到进程的引入
    倾听程序员
    数据库设计
    数据库设计之数据库,数据表和字段等的命名总结
    Set容器--HashSet集合
    Java Collection开发技巧
    关于事务
    关于触发器
    windows phone(成语典籍游戏开发)
  • 原文地址:https://www.cnblogs.com/shiyunli/p/12296219.html
Copyright © 2020-2023  润新知