js checkbox 父子关联(联动)

在项目中Repeater嵌套Repeater查看详细信息。 并且第一个Repeater里面有个checkbox,第二个也有。实现效果是点击第一个Repeater的checbox就选中它详细信息里面的所有checkbox.


效果:


点击选中效果:(在点击可以取消)



只要有一个子项没有选中,则取消父checbox的选中状态:


JS代码:

// --列头全选框被单击---
		function ChkAllClick(sonName, cbAllId) 
		{
			var arrSon = document.getElementsByName(sonName);
			var cbAll = document.getElementById(cbAllId);
			var tempState = cbAll.checked;
			for (i = 0; i < arrSon.length; i++) 
			{
				if (arrSon[i].checked != tempState)
					arrSon[i].click();
			}
		}

		// --子项复选框被单击---
		function ChkSonClick(sonName, clickson, cbAllId)
		{
			var arrSon = document.getElementsByName(sonName);
			var ckSon = document.getElementById(clickson);
			var cbAll = document.getElementById(cbAllId);
			//子选项选中则列头全选框被选中 否则执行其他。
			if (ckSon.checked == true) 
			{
				cbAll.checked = true;
			}
			else {
				for (var i = 0; i < arrSon.length; i++) 
				{
					if (!arrSon[i].checked) 
					{
						cbAll.checked = false;
						return;
					}
				}
				cbAll.checked = true;

			}
		}

aspx代码:

  

 <asp:Repeater ID="rpStockManager" runat="server" >
                <ItemTemplate>

<input type="checkbox" name="chkAll_<%#Eval("LocationID") %>" id="chkAll_<%#Eval("LocationID") %>"
                                onClick="ChkAllClick('chkSon_<%#Eval("LocationID") %>', 
'chkAll_<%#Eval("LocationID") %>')"/>

<asp:Repeater ID="rpFluxStockDetail" runat="server">
                       <ItemTemplate>
                            <tr class='Listrow1'  style="background-color:<%#(Container.ItemIndex%2==0)?"#CAE8EA":"#fff"%>;cursor: pointer">
                               <td style="width: 20px;" class="ListCellTitle">
                              <input type="checkbox" name="chkSon_<%#Eval("LocationID") %>" id='chkSon_<%#Eval("LotNum")%>'  
                               οnclick="ChkSonClick('chkSon_<%#Eval("LocationID") %>', 'chkSon_<%#Eval("LotNum")%>',
 'chkAll_<%#Eval("LocationID") %>')"
                            </td></tr>

/ItemTemplate>
                                    </asp:Repeater>

    </ItemTemplate>
                                    </asp:Repeater>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值