Javascript 操作服务器控件 CheckBoxList
最近得到一个需求:
1. 在ASP.NET页面里有个TextBox 和一个CheckBoxList.
2. 当TextBox用户扫描进一个字符串,会与CheckBoxList的ListItem的值比较,如果相等,就把相应的ListItem勾选上。
参考一下网上的方法,是会在页面加载是,给CheckBoxList 加个属性,在页面编译成Html时,属性会放到Span 标签里,然后你就可以取值了。
<table id="cblTest" border="0" style="background-color:#CCFFFF;width:158px;"> <tr> <td><span ItemValue="001"><input id="cblTest_0" type="checkbox" name="cblTest$0" /><label for="cblTest_0">001</label></span></td> </tr><tr> <td><span ItemValue="002"><input id="cblTest_1" type="checkbox" name="cblTest$1" /><label for="cblTest_1">002</label></span></td> </tr><tr> <td><span ItemValue="003"><input id="cblTest_2" type="checkbox" name="cblTest$2" /><label for="cblTest_2">003</label></span></td> </tr> </table>
后来, 想了下,其实,直接取值也可以取到的,只要取子节点的innerText值就行了。
<table id="cblTest" border="0" style="background-color:#CCFFFF;width:158px;"> <tr> <td><input id="cblTest_0" type="checkbox" name="cblTest$0" /><label for="cblTest_0">001</label></td> </tr><tr> <td><input id="cblTest_1" type="checkbox" name="cblTest$1" /><label for="cblTest_1">002</label></td> </tr><tr> <td><input id="cblTest_2" type="checkbox" name="cblTest$2" /><label for="cblTest_2">003</label></td> </tr> </table>
下面,是javascript代码:
<script type="text/javascript" language="javascript">
function check() {
var oCBList = document.getElementById("<%=cblTest.ClientID %>");
var tds = oCBList.getElementsByTagName("td");
var inputs = oCBList.getElementsByTagName("input");
var oTextBox = document.getElementById("tbTest");
for (var i = 0; i < tds.length; i++) {
if (oTextBox.value == tds[i].childNodes[1].innerText) {
inputs[i].checked = true;
}
}
}
function checkAll() {
var oCBList = document.getElementById("<%=cblTest.ClientID %>");
var inputs = oCBList.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
inputs[i].checked= true;
}
}
function unCheckAll() {
var oCBList = document.getElementById("<%=cblTest.ClientID %>");
var inputs = oCBList.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
inputs[i].checked = false;
}
}
</script>
html 代码:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="tbTest" runat="server"></asp:TextBox>
<input id="Button3" type="button" value="Check" onclick="check();"/><br />
<br />
<input id="Button1" type="button" value="Html_CheckAll" onclick="checkAll();" />
<asp:Button ID="Button2" runat="server" Text="Aspx_UnCheckAll" OnClientClick="unCheckAll();" />
<br />
</div>
<asp:CheckBoxList ID="cblTest" runat="server" Width="158px" BackColor="#CCFFFF">
<asp:ListItem>001</asp:ListItem>
<asp:ListItem>002</asp:ListItem>
<asp:ListItem>003</asp:ListItem>
<asp:ListItem>004</asp:ListItem>
<asp:ListItem>005</asp:ListItem>
</asp:CheckBoxList>
</form>
function check() :
1. 先通过 oCBList.getElementsByTagName("td"); 来确定CheckBoxList在Client产生的所有的<TD>标签
2. 并循环取childNodes[1].innerText的值,即<label>的innerText,并与CheckBox的值比较
3. 当两者值相等,勾选值inputs[i].checked= true (var inputs = oCBList.getElementsByTagName("input");)

浙公网安备 33010602011771号