javascript - jQuery 克隆表行

标签 javascript jquery html

我有一张表格,表格末尾有一个添加按钮。当您单击此按钮时,将克隆一个新行。我能够克隆行,但因为我有最初禁用的列,并从下拉列中启用。我遇到的问题是,如果列最初被禁用,一个带有禁用行的新行加起来,但是当我通过从下拉列表中选择值来启用该行时,新行的列已经启用,这是我想要的被禁用。

var regex = /^([a-zA-Z0-9 _-]+)$/;
var cindex = 0;
$(document).on('click', '.Buttons', function() {
  var $tr = $('#dataTable tbody tr:last');
  var $clone = $tr.clone(true);
  cindex++;
  $clone.find(':input').val('');
  $clone.attr('id', 'id' + (cindex)); //update row id if required
  //update ids of elements in row
  $clone.find("*").each(function() {
    var id = this.id || "";
    if (id != "") {

      var match = id.match(regex) || [];
      if (match.length == 2) {
        this.id = match[1] + (cindex);
      }
    }
  });
  $tr.after($clone);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table border="0" cellspacing="1" cellpadding="1" id="dataTable" class="graphtable">
  <thead>
    <tr>
      <td class="headingalign" width="16%">Links</td>
      <td class="headingalign" width="32%">Desciption</td>
      <td class="headingalign" width="16%">Image</td>
      <td class="headingalign" width="16%">URL</td>
    </tr>
  </thead>
  <tbody>
    <tr id="id01" name="row">
      <td>


        <select type="select-one" id='fldsearch' class="objselect" name="fldsearch" onChange="disableField()">
          <option value="">Select</option>
          <option value="GDS">Guides</option>
          <option value="LOF">Latest Offers</option>
          <option value="TEM">Templates</option>
          <option value="VID">Videos</option>
        </select>
      </td>
      <td>
        <input id="flddesc" name="flddesc" maxlength="500" disabled="true" class="objinputtext" size="85" value="{//RESPONSE}" />

      </td>
      <td>
        <input id="fldimg" name="fldimg" maxlength="50" disabled="true" class="objinputtext" size="35" value="{//RESPONSE}" />

      </td>
      <td>
        <input id="fldurl" name="fldurl" maxlength="15" disabled="true" class="objinputtext" size="35" value="{//RESPONSE}" />

      </td>
    </tr>
  </tbody>
</table>
<div class="buttonarea">
  <ul>
    <li><input tabindex="6" id="Button3" value="Add New Row" class="Buttons" name="Button3" type="button" /></li>
  </ul>
</div>

任何帮助将不胜感激。 Code

最佳答案

将输入值设置为空字符串后克隆

$clone.find(':input').val('');

您需要将属性设置为禁用

$clone.find(':input').not('select').val('').attr('disabled', true);

注意:我添加了 .not('select') 所以选择框不会被禁用

关于javascript - jQuery 克隆表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59317077/

相关文章:

javascript - Backbone.js 与 Knockout.js

javascript - 当我附加 XSS 过滤后的 html 时,它会打印原始 html

javascript - Ember.js - 如何在使用 ember-can 插件时获取能力源文件中的当前用户属性

javascript - 将 js 对象作为 json 传递给 jquery?

javascript - 使用 jQuery 设置 cookie

jquery - 如何在鼠标模糊时验证输入的日期

javascript - “onclick”存储值不起作用

javascript - Internet Explorer 6 的 jQuery height() 问题

javascript - 在 Chrome 中使用 javascript 在网站上插入用户名和密码

html - margin bottom 不会将元素向下推