幾種常用的下拉列表的動態載入和選中寫法
阿新 • • 發佈:2019-02-12
前端開發中,常用的幾種下拉框方式,包括: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值是否有重複存在的。以防無法定位標籤。