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");)

 

posted @ 2011-01-10 15:33  justinfly  阅读(925)  评论(0编辑  收藏  举报