js動態獲取下拉框的數據(搜索條件之間互相影響)


前提:在開發的過程當中,我們常常會遇到這種問題:某個查詢列表的查詢條件之間互相影響,比如現在有兩個搜索條件(下拉),一個需要顯示小組名稱,另一個是根據這個小組名稱查找到對應的小組內人員。那么該如何實現呢?

原理:我們暫且將這三個下拉列表起名為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>
table

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         }
js

后台部分:(這部分根據公司所用框架自行修改,我這個僅供參考)

 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     }    
cus_inittenantid
 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     }
changetenantid
 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     }
changeprojectname

 

 

持續更新!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM