jQuery - 复选框& checkall - 监控&如果相关复选框更改,则更改状态

时间:2013-09-25 20:17:12

标签: jquery firefox checkbox internet-explorer-8 status

使用jQuery 1.9.1,并使用IE8和Firefox。在我的页面上,我有一个表,其中包含动态创建的复选框。

显示时,几行的HTML如下所示:

<tr><td><label for="RoomNbr2" align="right">&nbsp;&nbsp;Room No 2<input type="checkbox" align="left" class="checkall" id="RoomNbr2" name="RoomNbr2"></label></td><td><label for="PCNbr203" align="right">&nbsp;&nbsp;203<input type="checkbox" align="left" id="PCNbr203" name="PCNbr203" class="RoomNbr2"></label></td><td><label for="PCNbr204" align="right">&nbsp;&nbsp;204<input type="checkbox" align="left" id="PCNbr204" name="PCNbr204" class="RoomNbr2"></label></td></tr>
<tr><td><label for="RoomNbr3" align="right">&nbsp;&nbsp;Room No 3<input type="checkbox" align="left" class="checkall" id="RoomNbr3" name="RoomNbr3"></label></td><td><label for="PCNbr310" align="right">&nbsp;&nbsp;310<input type="checkbox" align="left" id="PCNbr310" name="PCNbr310" class="RoomNbr3"></label></td><td><label for="PCNbr320" align="right">&nbsp;&nbsp;320<input type="checkbox" align="left" id="PCNbr320" name="PCNbr320" class="RoomNbr3"></label></td><td><label for="PCNbr340" align="right">&nbsp;&nbsp;340<input type="checkbox" align="left" id="PCNbr340" name="PCNbr340" class="RoomNbr3"></label></td><td><label for="PCNbr350" align="right">&nbsp;&nbsp;350<input type="checkbox" align="left" id="PCNbr350" name="PCNbr350" class="RoomNbr3"></label></td></tr>

当用户点击房间时,将检查与该房间相关的所有相关复选框(PCNbrXXX)。用户还可以选择单个复选框,或者可以选择/取消选择单个复选框。

我注意到的是,如果我检查Room Nbr,它会检查所有相关的复选框,但如果我单独取消选中,则会选中Room Nbr复选框。我用来检查所有方框的代码是:

$('#mytable').on('click','.checkall', function() {
   $('input.' + this.id).prop('checked', this.checked);
   });

我用来捕捉个别支票的代码是:

$('#mytable').on('click', function() {
   $('input.' + this.id).prop('checked', this.checked);
    });

在IE8和Firefox中,我需要做的是监控是否检查了任何单独的复选框。将Room Nbr复选框的显示状态更改为(1)显示检查是否检查了该行上的所有内容,(2)如果清除了一行中的1或更多,则更改为不确定状态(并且检查清除),以及(3)如果清除了行上的所有单个复选框,则显示清除。

我为每个单独的复选框分配了一个类,它给了我一个名字&amp; Room Nbr复选框的ID,但我不知道如何管理上述#1和#3中的状态,或者IE8中是否有#2(显示不确定状态)。至少,我想要将状态切换为选中状态(如果已全部检查)或清除行中的1个或多个已清除状态。

我很欣赏有关如何进行上述操作的任何建议。我正在使用以下内容来了解​​在任何给定时间检查的内容:

$("input[name*=PCNbr]:checked").map(function () {return this.name;}).get().join(",")

并且我认为我可以抓住分配给他们的班级,但还没有让它正常工作。

谢谢!

0 个答案:

没有答案
相关问题