递增计数以限制用户可以动态添加表单元素的次数

如何解决递增计数以限制用户可以动态添加表单元素的次数

我从一个jquery函数开始,并获得了帮助,然后对其进行了一些修改。我下面的代码有效。

HTML:

<a href="javascript:void(0);" class="add_project" title="Add project"><i data-feather="plus-circle"></i> Add another project</a>

JavaScript:

jQuery(function($) {
  const projectHTML = `<tr>
    <td>
      <select name="improvement_project[]" class="custom-select">
          <option selected>Select project</option>
        <optgroup label="Interior">
          <option>New Master/Owner's Suite</option>
          <option>Kitchen Upgrade</option>
       </select>
     </td>
  </tr>`;

  const $projects   = $("#projects");
  const $addProject = $('.add_project');
  const arrRow = () => $projects.append(projectHTML);

  $addProject.on("click",arrRow);
  ...
  });
});

单击“添加一个项目”按钮会将projectHTML追加为另一个下拉菜单。我想做的是限制用户可以添加一个下拉菜单次数,例如5次。我已经在后端进行了限制,但是当然最好在UI上进行限制。

我设置了一个最大变量和计数器变量:

var maxprojects = 5;
var counter = 1;

,然后尝试在$addProject.on("click",arrRow);周围添加一些代码,例如:

if (counter < maxprojects) {
  $addProject.on("click",arrRow);
  counter++;
}

但这不会阻止点击添加超过5个项目。

请帮助我了解我到底要怎么做。

谢谢!

解决方法

简单的解决方案是在新项目行中添加一个类,并在添加另一个之前获取该类的长度

const projectHTML = `<tr class="project-row">....</tr>`;

const arrRow = () => {
  if($('tr.project-row').length < 5){
     $projects.append(projectHTML);
  }
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?