javascript - 复制表单部分的 jQuery clone() 是在单击时添加多个部分

标签 javascript jquery html

在 ASP.NET MVC 中开发 Intranet 应用程序时,为了跟踪特定员工组的日常工作事件,我使用 2 列设计了表单。一个用于添加/删除流程按钮,一个用于流程描述,该表单本身包含工作流程描述所需的输入。

主要要求之一是在必要时添加新的工作流程,这意味着复制整个字段集。我提到,我最终可能会通过 1 个表单提交 50 多个工作流程。 现在我认为 jQuery 的 .clone() 方法会让这件事变得简单。但产生了奇怪的效果。

编辑:

问题:

5次点击后,字段集的总数为:9,我应该有6个(1个原始过程和5次点击)。 6 次点击后,我总共获得了 17 个新字段集,7 次点击 = 总共 33 个字段集。

经过两天的搜索和大量的谷歌搜索,我找不到问题。使用的浏览器是 IE11,因为这是公司级别的标准。 非常感谢任何帮助。

下面是我正在使用的 jquery 事件:

    var ACTIVITATEACORD = $("form[name=activitate_acord] > fieldset[data-main=1]").clone();

$('.relative.acord').on('click', function () {
        var num = $("form[name=activitate_acord] > fieldset").length;
        console.log(num);
        var newNum = new Number(num + 1);
        console.log(newNum);
        //var changeDataMainFieldset = ACTIVITATEACORD.data('main');
        //ACTIVITATEACORD.attr("data-main", newNum);
       
        //var changeNameMainFielset = ACTIVITATEACORD.attr('name', CombineStrings(ACTIVITATEACORD.attr("name"), '-', newNum));

        ACTIVITATEACORD.insertAfter('form[name=activitate_acord] > fieldset').last();      
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<!-- Lines removed for convenience-->
<fieldset name="activitati-accord-main-process-1" data-main="1">
   <fieldset name="descriere-proces-1" data-count="">
        <legend>Descriere proces</legend>

         <div class="form-group col-md-3">
         <label for="proces" class="control-label col-md-4 text-left">Proces:</label>
         <div class="col-xs-7">
          <select name="proces-1" data-id="proces-@(idCounter++)" class="form-control" required>
               <option value="">--</option>
               <option value="11">11</option>
               <option value="43">43</option>
               <option value="6423">6423</option>
           </select>
          </div>
          </div>
 <!--lines removed for conveninece-->
      </fieldset>
  </fieldset>

提前感谢分享!

最佳答案

操作顺序很重要:)

与:

.insertAfter('form[name=activitate_acord] > fieldset').last()

您在每个 fieldset 之后插入克隆的元素,然后要求 jQuery 为您提供最后一个 fieldset

将其更改为:

.insertAfter($('form[name=activitate_acord] > fieldset').last())

现在,您将首先获取最后一个 fieldset,然后仅在最后一个 fieldset 之后附加克隆元素。

关于javascript - 复制表单部分的 jQuery clone() 是在单击时添加多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32496905/

相关文章:

javascript - 如何在 JavaScript 中更改 Span 的类

html - fieldset 必须是一种形式吗?

Javascript 正则表达式从 DOM ID 中删除非法字符

javascript - 使用 JS 取消表单提交

javascript - 如何在javascript中验证至少包含一个字母和一个数字的字符串?

html - Doxygen 和 Mathjax。通过 HTML 文档缓慢导航

javascript - 根据其他类中的选定字段将 displayNone 应用于特定类

javascript - 在一个命令中运行多个 Nodejs 服务器

javascript - 单击的列表项的索引不会重置

javascript - css 未运行的 setTimeout