0

在过去一年左右的时间里,我一直很喜欢这个网站,并期待着大家的帮助。

我正在处理一个经典的 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"的复选框,我想禁用并选中复选框在同一行标题为“酒吧” 。 本质上,如果选中Re ,则必须在提交表单之前检查Bar 。

我尝试了以下 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。有什么建议么?任何帮助将不胜感激。提前致谢!

4

2 回答 2

0

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

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

小提琴

笔记 :

  • 您的复选框不是兄弟,因为它们嵌套在 TD 中
  • 更改事件更适合复选框
  • 的委托版本on()会更好,因为live()已弃用
  • checked属性是设置/取消设置检查状态的原因,而不是disabled
于 2013-06-09T20:47:43.440 回答
0
$(function(){
$('.Re').on('change', function () {
    var n = $(this).siblings('Bar');
    if ($(this).attr('checked')) {
    n.prop('disabled', true); 
    } else {
        n.prop('disabled', false);
    } 
});
});
于 2013-06-09T20:49:45.547 回答