前提:在開發的過程當中,我們常常會遇到這種問題:某個查詢列表的查詢條件之間互相影響,比如現在有兩個搜索條件(下拉),一個需要顯示小組名稱,另一個是根據這個小組名稱查找到對應的小組內人員。那么該如何實現呢?
原理:我們暫且將這三個下拉列表起名為A,B,C. 他們之間的依賴關系是:B的值隨着A的變化而變化,C的值隨着A,B的變化而變化。我們要做的就是:
1. 進入頁面的時候只為A賦值,將B和C都清空。
2. 每次點擊A的時候就將B和C的下拉框中的內容先清空再給B賦值。
3. 每次點擊B的時候,將C的下拉框中的內容先清空再賦值。
例:業務是每個組織機構都有自己的調查問卷,每個問卷的問題也不同。邏輯是共有三個下拉框,分別是組織機構,問卷名稱,問題選擇。根據這三個查詢條件來查詢數據。
table部分:

1 <select class="select" id="org_id" name="org_id" onchange="cplb()" style="width:130px;height:25px" required="true" msgName="組織機構"> 2 <option value= "" data-id="0">請選擇</option> 3 </select> 4 <select class="select" id="projectid" name="projectid" onchange="cpl()" style="width:130px;height:25px" required="true" msgName="問卷項目名稱"> 5 <option value= "" data-id="0">請選擇</option> 6 </select> 7 <select class="select" id="questionselect" name="questionselect" style="width:130px;height:25px" required="true" msgName="問題選擇"> 8 <option value= "" data-id="0">請選擇</option> 9 </select>
js部分:

1 //進入頁面初始化組織機構下拉列表 2 $(function(){ 3 var aurl = "<%=webapp%>/Naire_DataQuery/inittenantid.act"; 4 $.ajax({ 5 async: false,//是否異步 6 cache: false,//是否使用緩存 7 type: 'POST',//請求方式:post 8 dataType: 'json',//數據傳輸格式:json 9 url: aurl,//請求的action路徑 10 data: {}, 11 error: function (XMLHttpRequest, textStatus, errorThrown) { 12 //請求失敗處理函數 13 alert('獲取用戶信息失敗'); 14 }, 15 success: function (data) { 16 var k = JSON.parse(data); 17 $("#org_id").empty();//進入頁面首先清空組織機構的下拉列表內容 18 $("#org_id").append("<option value= '' data-id='0'>請選擇</option>")//為組織結構先添加一個請選擇 19 for(var i=0;i<k.length;i++){//循環從后台查出來的數據,逐條填入組織機構的下拉中。 20 $("#org_id").append("<option value='"+k[i].id+"' data-id='"+k[i].id+"'>"+k[i].cname+"</option>"); 21 } 22 } 23 }); 24 }) 25 26 //改變組織機構的值 27 function cplb(){ 28 $("#projectid").empty();//每次修改組織機構的值的時候,清空問卷項目名稱的下拉內容 29 $("#projectid").append("<option value= '' data-id='0'>請選擇</option>") 30 $("#questionselect").empty();//每次修改組織機構的值的時候,清空問題選擇的下拉內容 31 $("#questionselect").append("<option value= '' data-id='0'>請選擇</option>") 32 var org_id = $("#org_id").val(); 33 var aurl = "<%=webapp%>/Naire_DataQuery/changetenantid.act"; 34 $.ajax({ 35 async: false,//是否異步 36 cache: false,//是否使用緩存 37 type: 'POST',//請求方式:post 38 dataType: 'json',//數據傳輸格式:json 39 url: aurl,//請求的action路徑 40 data: {teid:org_id}, 41 error: function (XMLHttpRequest, textStatus, errorThrown) { 42 //請求失敗處理函數 43 alert('獲取用戶信息失敗'); 44 }, 45 success: function (data) { 46 var k = JSON.parse(data); 47 for(var i=0;i<k.length;i++){ 48 $("#projectid").append("<option value='"+k[i].id+"' data-id='"+k[i].id+"'>"+k[i].cname+"</option>"); 49 } 50 } 51 }); 52 } 53 54 //改變問卷項目名稱的值 55 function cpl(){ 56 $("#questionselect").empty();//每次修改問卷項目的名稱,都清空問題選擇的下拉內容。 57 $("#questionselect").append("<option value= '' data-id='0'>請選擇</option>") 58 var org_id = $("#org_id").val(); 59 var projectid = $("#projectid").val(); 60 var aurl = "<%=webapp%>/Naire_DataQuery/changeprojectname.act"; 61 $.ajax({ 62 async: false,//是否異步 63 cache: false,//是否使用緩存 64 type: 'POST',//請求方式:post 65 dataType: 'json',//數據傳輸格式:json 66 url: aurl,//請求的action路徑 67 data: {teid:org_id,projectid:projectid}, 68 error: function (XMLHttpRequest, textStatus, errorThrown) { 69 //請求失敗處理函數 70 alert('獲取用戶信息失敗'); 71 }, 72 success: function (data) { 73 var k = JSON.parse(data); 74 for(var i=0;i<k.length;i++){ 75 $("#questionselect").append("<option value='"+k[i].id+"' data-id='"+k[i].id+"'>"+k[i].cname+"</option>"); 76 } 77 } 78 }); 79 }
后台部分:(這部分根據公司所用框架自行修改,我這個僅供參考)

1 @ResponseBody 2 @RequestMapping("/cus_inittenantid") 3 public String cus_inittenantid(HttpServletRequest request) throws Exception { 4 5 List list = naire_DataQueryService.getcus_tenantList();//根據自己實際情況查出來list即可。 6 JSONArray array = new JSONArray(); 7 for (int i = 0; i < list.size(); i++) { 8 Map map = (Map) list.get(i); 9 String id = (String) map.get("id"); 10 String cname = (String) map.get("cname"); 11 JSONObject obj = new JSONObject(); 12 obj.put("id", id); 13 obj.put("cname", cname); 14 array.put(obj); 15 } 16 17 return array.toString(); 18 }

1 @ResponseBody 2 @RequestMapping("/changetenantid") 3 public String changetenantid(HttpServletRequest request, String teid) throws Exception { 4 List list = naire_DataQueryService.getchangeProject(teid);//根據實際情況查出來list格式的即可。 5 JSONArray array = new JSONArray(); 6 for (int i = 0; i < list.size(); i++) { 7 Map map = (Map) list.get(i); 8 String id = (String) map.get("id"); 9 String cname = (String) map.get("cname"); 10 JSONObject obj = new JSONObject(); 11 obj.put("id", id); 12 obj.put("cname", cname); 13 array.put(obj); 14 } 15 16 return array.toString(); 17 }

1 @ResponseBody 2 @RequestMapping("/changeprojectname") 3 public String changeprojectname(HttpServletRequest request, String teid, String projectid) throws Exception { 4 List list = naire_DataQueryService.getchangequestionselect(teid, projectid);//根據自己實際情況查出格式為list即可。 5 JSONArray array = new JSONArray(); 6 for (int i = 0; i < list.size(); i++) { 7 Map map = (Map) list.get(i); 8 String id = (String) map.get("id"); 9 String cname = (String) map.get("cname"); 10 JSONObject obj = new JSONObject(); 11 obj.put("id", id); 12 obj.put("cname", cname); 13 array.put(obj); 14 } 15 16 return array.toString(); 17 }
持續更新!!