CheckboxList是服務器控件,綁定數據容易,服務器端獲取選中值也容易。但是生成的靜態頁面居然沒有ListItem的Value值,所以默認情況下用js在頁面中是取不到ListItem的值的。至於為什麼不顯示value值,我也不清楚,本篇給出一個用jQuery獲取checkboxlist值的方法。
先看看原始的頁面html代碼:
<asp:CheckBoxList runat="server" ID="listTest"> </asp:CheckBoxList> <input type="button" id="btnShow" value="顯示選中值" />
下面我們綁定checkboxlist,代碼如下:
if (dt != null && dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { //分別為text值、value值 listTest.Items.Add(new ListItem(dr["Title"].ToString(), dr["ID"].ToString())); } }
頁面中生成的html代碼如下:
<table id="listTest" border="0"> <tr> <td> <input id="listTest_0" type="checkbox" name="listTest$0" /> <label for="listTest_0">基於jQuery的一個震動效果</label> </td> </tr> <tr> <td><input id="listTest_1" type="checkbox" name="listTest$1" /> <label for="listTest_1">使用css的overflow屬性改變縮略圖大小</label> </td> </tr> </table>
可以看出checkboxlist轉換為一個表格的形式,並且其中沒有value值。label中的值,即為text值。當點擊它時,也可以選中checkbox,這裡在選checkbox時提高了用戶體驗。
下面進入我們的處理過程,首先,在綁定checkboxlist時,為ListItem每個對象添加一個alt屬性,值保存對應的value值,代碼如下:
if (dt != null && dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { //分別為text值、value值 listTest.Items.Add(new ListItem(dr["Title"].ToString(), dr["ID"].ToString())); } //為ListItem對象添加alt屬性,值保存value值 foreach (ListItem li in listTest.Items) { li.Attributes.Add("alt", li.Value); } }
現在,生成的html代碼如下:
<table id="Table1" border="0"> <tr> <td> <span alt="400"><input id="listTest_0" type="checkbox" name="listTest$0" /> <label for="listTest_0">基於jQuery的一個震動效果</label></span> </td> </tr> <tr> <td><span alt="398"><input id="listTest_1" type="checkbox" name="listTest$1" /> <label for="listTest_1">使用css的overflow屬性改變縮略圖大小</label></span> </td> </tr> </table>
從上邊可以看出,多了一個span標簽,裡邊alt的值即為我們需要的value值。使用下邊的jQuery代碼即可獲得:
$(document).ready(function() { $("#btnShow").click(function() { var valuelist = ""; //保存checkbox選中值 //遍歷name以listTest開頭的checkbox $("input[name^='listTest']").each(function() { if (this.checked) { //$(this):當前checkbox對象; //$(this).parent("span"):checkbox父級span對象 valuelist += $(this).parent("span").attr("alt") + ","; } }); if (valuelist.length > 0) { //得到選中的checkbox值序列,結果為400,398 valuelist = valuelist.substring(0, valuelist.length - 1); } }); });
以上就是jQuery獲取checkboxlist的value值的方法,不知道大家有沒有真正理解,希望這篇文章能夠幫到大家。