【问题标题】:How to limit the clone of forms如何限制表单的克隆
【发布时间】:2016-06-04 22:57:53
【问题描述】:

我有一个 4 表单,它下面有一个按钮说添加更多经验和添加更多教育等,当用户单击添加更多按钮时,jquery 会创建表单的克隆并附加它,我遇到的问题是我无法限制克隆的数量吗?这里是代码

$(".btn-duplicator").on("click", function(a) {
      a.preventDefault();

      var b = $(this).parent().siblings(".duplicateable-content"),
          c = $("<div>").append(b.clone()).html();
       $(c).insertBefore(b);
      var d = b.prev(".duplicateable-content");
          d.fadeIn(600).removeClass("duplicateable-content"), d.find(".btn-remove").on("click", function(a) {
          a.preventDefault();
      var b = $(this).parents(".item-block").parent("div");
          b.fadeOut(600, function() {
             b.remove()
                })
            })

        });

我尝试添加

var count = 1;
    if(count < 5) {
    count++;
    }

但似乎没有任何效果,如何将克隆限制为仅 5 种形式

体验的html结构

<div class="col-xs-12 duplicateable-content">
  <div class="form-group">
    <input type="text" class="form-control" placeholder="Name">
  </div>
  <button class="btn btn-primary btn-duplicator">Add experience</button>
</div>

教育结构及更多

<div class="col-xs-12 duplicateable-content">
  <div class="form-group">
    <input type="text" class="form-control" placeholder="name">
  </div>
  <button class="btn btn-primary btn-duplicator">Add Education</button>
</div>

【问题讨论】:

    标签: javascript jquery clone


    【解决方案1】:

    您的var count=1 取决于您声明它的位置。

    如果您在点击处理程序中声明var count,它将始终设置为每次点击一次。如果您在单击处理程序之外声明它,它将增加。

    var count = 1; // will work
    $(".btn-duplicator").on("click", function(a) {
        var count = 1; // won't work - is same value every click
    

    也可以计算元素

    if( $(".duplicateable-content").length >=5 ){
       alert('Only allowed 5');
       return;// don't proceed to clone code
    }
    

    【讨论】:

    • 如果有多个按钮怎么办,我的意思是如果我的页面包含两个或三个添加更多按钮 - 比如添加经验,添加教育
    • 应该没关系...相同的事件处理程序,相同的 count 变量,或者如果每个常见元素类型的类都相同,则 dom 中的计数元素总数相同
    • 这很重要,因为我使用了你的第二种方法 if( $(".duplicateable-content").length >=5 ),当我点击添加更多时,它说第一次点击时只允许 5 个
    • 好吧,我不确定您的 html 是什么样的。我假设页面中只有 5 个允许的总数。有几个?
    • 看,我有一个页面,其中有 3 个表单,每个表单都有一个 div btn-duplicator & 当我点击添加更多按钮时,它会克隆上面的表单,根据你的说法,什么可能是最好的限制它的方法
    【解决方案2】:

    在后面添加以下内容:

    $(".btn-duplicator").on("click", function(a) {
      var noClones = $(this).data('clones') || 0;
      $(this).data('clones', ++noClones);
      if (noClones > 5) return;
      // ...
      // ...
    

    【讨论】:

    • 注意:假设只有一个这样的按钮,否则data('clones')在不同的按钮上会有所不同
    猜你喜欢
    • 2013-01-01
    • 2011-12-19
    • 2015-06-11
    • 2011-11-01
    • 1970-01-01
    • 2011-05-31
    • 2012-04-25
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多