1
<script type="text/javascript">
    function fn_CloneRow(pThis) {
        $(pThis).parent().parent().clone().appendTo($(pThis).parent().parent().parent());
    }

通过使用上面的代码,我能够以表格形式将单击的行克隆到表格的底部,但我无法存储它们。当我更改克隆行的值时,会更新原始行,而不是在提交页面时添加新行。

4

1 回答 1

0

这是因为在克隆行时,您还克隆了包含主键的元素。在我的脑海中,使用以下元素执行此操作:

  • 清空包含 PK 的输入元素(您需要确定这是数组 f01 还是其他数组。您的问题不提供上下文)或者如果您使用 rowid,请清除名称为“frowid”的输入元素
  • 清空包含行校验和的输入元素。这是一个名为“fcs”的输入元素
  • 将包含记录状态 (name = fcud) 的输入元素设置为 'C' 。它用于确定对其执行什么操作。“D”是新的,“C”是变化的,“U”是更新的——我想。但是,这不在任何文档中,通过检查 html 和 javascript 您可以找到它。

您可以通过不做来进一步改进您的代码parent().parent()...,而只需使用查找最近的 tr 或表.closest(...)

var newRow = $(pThis).closest('tr').clone();
$('input[name=f01]', newRow).val(""); //input with PK value -- make sure this matches your situation!!!
$('input[name=frowid]', newRow).val(""); //or if the form works with rowid, use this
$('input[name=fcs]', newRow).val(""); //clear the checksum
$('input[name=fcud]', newRow).val("C"); //set the record status
newRow.appendTo($(pThis).closest('table')); //finally, append the row to the table
于 2014-03-12T13:41:56.207 回答