选中另一个复选框时,切换并禁用/启用一个复选框

时间:2013-06-09 20:44:26

标签: jquery html asp-classic checkbox

过去一年左右我很喜欢这个网站,并期待着你们所有人的帮助。

我正在开发一个经典的asp页面(我继承了这个页面,没有创建它),它有一个由记录集填充的表。记录集中的每条记录都会根据所选的条件在表上生成一个新行。为了便于说明和简化,如果选择1个商店或1000个商店,该表将生成那么多行。假设选择了两个记录,表格如下所示:

<table>
  <tr class="row">
    <td>Store 1</td>
    <td><input type=checkbox value="" name="chkFoo<%=rsR2.AbsolutePosition%>"/>Foo</td>
    <td><input type=checkbox value="" name="chkBar<%=rsR2.AbsolutePosition%>" class="Bar"/>Bar</td>
    <td><input type=checkbox value="" name="chkDo<%=rsR2.AbsolutePosition%>"/>Do</td>
    <td><input type=checkbox value="" name="chkRe<%=rsR2.AbsolutePosition%>" class="Re"/>Re</td>
    <td><input type=checkbox value="" name="chkMe<%=rsR2.AbsolutePosition%>"/>Me</td>
  </tr>
  <tr class="row">
    <td>Store 2</td>
    <td><input type=checkbox value="" name="chkFoo<%=rsR2.AbsolutePosition%>"/>Foo</td>
    <td><input type=checkbox value="" name="chkBar<%=rsR2.AbsolutePosition%>" class="Bar"/>Bar</td>
    <td><input type=checkbox value="" name="chkDo<%=rsR2.AbsolutePosition%>"/>Do</td>
    <td><input type=checkbox value="" name="chkRe<%=rsR2.AbsolutePosition%>" class="Re"/>Re</td>
    <td><input type=checkbox value="" name="chkMe<%=rsR2.AbsolutePosition%>"/>Me</td>
  </tr>
</table>

每个对象都根据记录位置获得自己的名称。我几乎是javascript和jquery的新手(在去年左右尝试学习它),但我想做的是:如果有人点击标题为“Re”的复选框,我想要禁用并选中同一行上标题为“栏” 的复选框。基本上,如果选中重新栏 strong>必须在提交表格之前进行检查。

我尝试了以下jquery代码,但我正在努力解决它。

$('.Re').live('click', function () {
    var n = $(this).siblings('Bar');
    if ($(this).attr('checked')) {
    n.prop('disabled', true); 
    } else {
        n.prop('disabled', false);
    } 
});

我也尝试过这个链接(除其他外)无济于事。 http://bit.ly/15NPhdN。有什么建议?任何帮助将不胜感激。提前谢谢!

2 个答案:

答案 0 :(得分:0)

我猜这样的事情应该这样做:

$(function() {
    $('table').on('change', '.Re', function () {
        console.log(this.checked)
        $(this).closest('td').siblings('td').find('.Bar').prop('checked', this.checked);
    });
});

FIDDLE

注意:

  • 你的复选框不是兄弟姐妹,因为它们嵌套在TD的
  • 更改事件更适合复选框
  • 授权版on()会更好,因为live()已被弃用
  • checked属性设置/取消设置已检查状态,而不是disabled

答案 1 :(得分:0)

$(function(){
$('.Re').on('change', function () {
    var n = $(this).siblings('Bar');
    if ($(this).attr('checked')) {
    n.prop('disabled', true); 
    } else {
        n.prop('disabled', false);
    } 
});
});