【问题标题】:Enable disable HTML table element with JQuery in disabled <TR>在禁用 <TR> 中启用禁用带有 JQuery 的 HTML 表格元素
【发布时间】:2014-09-11 08:39:55
【问题描述】:

我正在使用 JQuery 创建一个动态 HTML 表。示例代码如下。

var tbody=$("#myTable tbody");

var tableRow;

if(somevariableIsTrue)
   tableRow=$("<tr>").attr("disabled",true);
else
   tableRow=$("<tr>");

var td=$("<td>");
    td.appendTo(tableRow);

var tdn=#("<td>");
tdn.appendTo(tableRow);

 tableRow.appendTo(tbody);

现在我创建不同的 TD 并附加到 tableRow。如果该行的 disabled 属性为 TRUE,显然该行的所有 TD 也将被禁用。但我希望我的第一个禁用行的 TD 不应该被禁用,因为它是单击时的复选框列,我想启用/禁用同一行。我尝试了不同的方法来获取第一列中的复选框并尝试启用它,但都失败了。有人可以建议我如何在 JQuery 中做到这一点

编辑 希望这个屏幕截图有助于理解我的要求

如图所示,第一行被禁用,包括第一个带有复选框的 td。我想一直启用复选框列,以便在选中它时启用该行并且取消选中该行再次禁用该行。

【问题讨论】:

  • tr 元素没有disabled 属性。如果要禁用该tr 中的输入,则需要将属性单独添加到所有输入。
  • 它与 tr 一起工作,并根据需要禁用该 tr 中的所有其他元素。我不想迭代每个 td 来启用禁用元素,所以我选择了这种方法。
  • 你还应该考虑一个轻量级的模板引擎。
  • @V.B 是 this fiddle 你想要什么?
  • @V.B 你声称在 上禁用了作品。请注意,这不适用于现代浏览器。我想你使用的是旧版本的 IE。相反,您应该禁用作为该表行子级的表单元素。

标签: jquery html disabled-control isenabled


【解决方案1】:

这是一个简单的解决方案:

// first row checkboxes
$('tr td:first-child input[type="checkbox"]').click( function() {
   //enable/disable all except checkboxes, based on the row is checked or not
   $(this).closest('tr').find(":input:not(:first)").attr('disabled', !this.checked);
});

看到它在这个JSFiddle中工作

【讨论】:

    【解决方案2】:

    你可以打电话

    $('input[type=checkbox]').removeAttr('disabled');
    

    $('input[type=checkbox]').prop('disabled', false);
    

    在您的所有复选框上。这基本上会重新启用您的所有复选框

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 2021-01-23
      • 2015-01-24
      • 1970-01-01
      相关资源
      最近更新 更多