1. 程式人生 > >幾種常用的下拉列表的動態載入和選中寫法

幾種常用的下拉列表的動態載入和選中寫法

前端開發中,常用的幾種下拉框方式,包括:easyui中的combobox,combo,html中的select標籤<select></select>,struts2標籤:<s:select></s:select>。下面是我總結的這幾種下拉框的動態載入和動態選中的寫法,以防後面再遇到。

一、combobox,combobox:使用easyui外掛遠端請求資料方式

   combobox,combobox:使用easyui外掛遠端請求資料方式
    先定義input標籤:     <input id="xx" />
 

 ${"#xx"}.combobox({
	 valueField:'id',    
    	 textField:'text',
	 url:"請求資料的路徑",
	 queryParams:{"age" : 25, "order" : "desc"}//帶額外的引數,當然也可以在url後面拼接引數
    });	

    注意:請求的資料返回的資料未json格式,格式如下:
[{    
                 "id":1,    
                 "text":"text1"   
                },{    
                 "id":2,    
                 "text":"text2"   
                },{    
                 "id":3,    
                 "text":"text3",    
                 "selected":true   
                },{    
                 "id":4,    
                 "text":"text4"   
                },{    
                 "id":5,    
                 "text":"text5"   
                }]  

      在後臺分裝的資料: 
List  list = new ArrayList()//存放查詢的資料
                JSONArray jsonArr = new JSONArray();
		JSONObject jsonObj;
		jsonObj = new JSONObject();
		jsonObj.put("id", "");
		jsonObj.put("text", "全部");
		jsonObj.put("selected", true);
		jsonArr.add(jsonObj);
		if(null!=list){
			for(int i=0;i<list.size();i++){
				jsonObj = new JSONObject();
				jsonObj.put("id", list.get(i).xx);//對應的id
				jsonObj.put("text", list.get(i).getOpNo());//對應的text
				jsonObj.put("selected", false);
				jsonArr.add(jsonObj);
			}
			
		}
		return jsonArr.toString();

   動態選擇選項,使用$("#xx").combobox('select','要選中的id');
  此種方式樣式相對於html或s標籤中的樣式美觀一點,而且方便,combo與combobox相似,不再贅述。

二.使用html中的使用select標籤 :

  2.1 html標籤結合js 

  <select id="xx">
   <option value="0">選項1</option>
  </select> 
   然後使用javascript動態載入資料
  document.getElementById("xx").options.add(new Option("mytest","1"));//新增
  document.getElementById("xx").remove("1");//刪除  這種適合適合新增的資料在js中獲取方便的。
   

  如果是通過action傳到前臺的資料是list,使用jquery不容易解析,因為jquery一般解析的是xml或json資料,所以
  如果使用上述方法動態新增下拉選項的話,要在後臺將資料轉成json資料,

2.2 由於html沒有迴圈功能,因此如果不在javascript中動態新增的話就無法實現, 但是可以我們可以藉助JSTL(c標籤) 標籤中的<c:forEach></c:forEach>迴圈list

  首先不要忘記引入jstl標籤
  

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <select  id="test" >
           <option value="1">選項一</option>
     <c:forEach items="${bopTmDataDictionaryList}" var="e">
          <option value="${e.id}"><c:out value="${e.chName}"/></option>
      </c:forEach>
 </select>
特別注意(網上關於設定text為pxx的項選中的用法為:$("#test").find("option[text='pxxtext']").attr("selected",true),親測不起作用,暫時不用)。 

 三、使用也可以使用struts2標籤(s標籤)

    同樣不能忘記下引入s標籤

<%@taglib prefix="s" uri="/struts-tags"%>

 <s:select id="xx" name="xx" list="從後臺傳過來的list集合"
	 headerKey="預設的第一個選項的id" headerValue="預設的第一個選項的text"
	listKey="chName" listValue="chName" value='' >
 </s:select>

四、無論使用html標籤還是s標籤,他們的動態選中js程式碼方式一樣

動態選中js程式碼:
 1、設定value為pxx的項選中(value相當於id)

$("#test").val("pxxid");
2、根據選項的text選中
var options=$("#test").find("option");
		$.each(options,function(i,option){
			if($(option).attr("value")==你要選中的文字值){
				$(option).attr("selected",true);
			}
		});

最後注意,當你使用了上述方法不起作用時,請注意你使用的id值是否有重複存在的。以防無法定位標籤。