我想通过单击 + 按钮添加相同的文本字段,但问题是只有第一个 + 按钮工作其他 + 按钮不工作?需要帮助

Posted

技术标签:

【中文标题】我想通过单击 + 按钮添加相同的文本字段,但问题是只有第一个 + 按钮工作其他 + 按钮不工作?需要帮助【英文标题】:I want to add same text field by clicking + button but problem is only first + button is working other + button is not working? help needed 【发布时间】:2021-07-29 03:23:00 【问题描述】:

我已经使用 jquery 代码来解决问题,但它不起作用。只有第一个 + 按钮有效。如果我先按 + 按钮,则在下面的 2 个 (+) 按钮中添加文本框(即在附件 II 和附件 III 旁边)-->1 个图像描述

单击附件 1 表旁边的第一个 (+) 按钮后,在每张表中添加了 1 行,即(起始单元格、结束单元格、没有标题单元格)(即附件 II 和附件 III),但我希望它应该仅在该工作表中添加,例如,当我单击附件 II 旁边的按钮时,仅在附件 II 内添加了新行,它不应反映在所有工作表中 --> 2 图像描述

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready( function () 
        $("#append").click( function(e) 
          e.preventDefault();
          $(".inc").append('<div class="controls">\
                <input class="form-control" type="text" name="textbox" placeholder="Starting cell" style="width: 190px;">\
                <input class="form-control" type="text" name="textbox" placeholder="Ending cell" style="width: 190px;">\
                <input class="form-control" type="text" name="textbox" placeholder="No. of Headers" style="width: 190px;">\
                <button style="margin-left: 50px" class="remove_this btn btn-danger" type="submit" id="append" name="append">x</button>\
                <br>\
                <br>\
                </div>');
          return false;
        );

    jQuery(document).on('click', '.remove_this', function() 
        jQuery(this).parent().remove();
        return false;
        );
    $("input[type=submit]").click(function(e) 
      e.preventDefault();
      $(this).next("[name=textbox]")
      .val(
        $.map($(".inc :text"), function(el) 
          return el.value
        ).join(",\n")
      )
    )
  );
</script>

<! --name value was coming from res.render(__dirname+'/checkhtml.html',names:sheet_name_list);-->
  <div class="form-group row">    
    <div id="experienceSection">
      <% names.forEach(function(name)  %>
        <br>
      <label class="form-label form-label-top form-label-auto" id="label_20" for="input_20">
        Enter Table Configuration for @ <h4> <%= name %> </h4> Sheet
        <span class="form-required">
          *
        </span>
      </label>
      <div class="inc">
        <div class="controls">
            <input type="text" class="form-control" name="<%= name %>" id="answer1" style="width: 190px;" placeholder="Starting Cell"/> 
            <input type="text" class="form-control" name="<%= name %>" id="answer1" style="width: 190px;" placeholder="Ending Cell"/>
            <input type="text" class="form-control" name="<%= name %>" id="answer1" style="width: 190px;" placeholder="No. of Headers"/>
            <button style="margin-left: 50px" type="button" id="append" name="append">+</button>
            <br>
            <br>
        </div>
      </div>
      <% ); %>
    </div>
  </div>
  

【问题讨论】:

还有什么+按钮?每次添加一组新元素时,按钮上只有一个带有 X 的“删除”选项。 请查看此图片:i.stack.imgur.com/ipbf0.png 其他 + 按钮表示附件 2 旁边的按钮和附件 1 旁边的仅附件 3 按钮正在工作 【参考方案1】:

您的代码在循环内,因此它为每个按钮分配相同的 id,我们不能对多个元素使用相同的 id。而是将 id 更改为 class 。然后,使用 $(this).closest(".inc") 仅针对已单击按钮的 inc div

演示代码

//change to class
$(".append").click(function(e) 
  var name = $(this).closest(".inc").prev().find("h4").text().trim();
  console.log(name)
  e.preventDefault();
  //use closest..here 
  $(this).closest(".inc").append(`<div class="controls">\
                <input class="form-control" type="text" name="$name" placeholder="Starting cell" style="width: 190px;">\
                <input class="form-control" type="text" name="$name" placeholder="Ending cell" style="width: 190px;">\
                <input class="form-control" type="text" name="$name" placeholder="No. of Headers" style="width: 190px;">\
                <button style="margin-left: 50px" class="remove_this btn btn-danger" type="button" name="append">x</button>\
                <br>\
                <br>\
                </div>`);
  return false;
);

jQuery(document).on('click', '.remove_this', function() 
  jQuery(this).parent().remove();
  return false;
);
.inc 
  border: 2px solid blue;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div class="form-group row">
  <div id="experienceSection">


    <br>
    <label class="form-label form-label-top form-label-auto" id="label_20" for="input_20">
        Enter Table Configuration for @ <h4> Abc </h4> Sheet
        <span class="form-required">
          *
        </span>
      </label>
    <div class="inc">
      <div class="controls">
        <input type="text" class="form-control answer1" name="<%= name %>" style="width: 190px;" placeholder="Starting Cell" />
        <input type="text" class="form-control answer1" name="<%= name %>" style="width: 190px;" placeholder="Ending Cell" />
        <input type="text" class="form-control answer1" name="<%= name %>" style="width: 190px;" placeholder="No. of Headers" />
        <!--use class-->
        <button style="margin-left: 50px" type="button" class="append" name="append">+</button>
        <br>
        <br>
      </div>
    </div>
    <br>
    <label class="form-label form-label-top form-label-auto" id="label_20" for="input_20">
        Enter Table Configuration for @ <h4> Xyz </h4> Sheet
        <span class="form-required">
          *
        </span>
      </label>
    <div class="inc">
      <div class="controls">
        <input type="text" class="form-control answer1" name="<%= name %>" style="width: 190px;" placeholder="Starting Cell" />
        <input type="text" class="form-control answer1" name="<%= name %>" style="width: 190px;" placeholder="Ending Cell" />
        <input type="text" class="form-control answer1" name="<%= name %>" style="width: 190px;" placeholder="No. of Headers" />
        <button style="margin-left: 50px" type="button" class="append" name="append">+</button>
        <br>
        <br>
      </div>
    </div>
  </div>

【讨论】:

感谢妈妈花时间解决我的问题!我仍然遇到一个问题。单击(+)按钮后,没有添加新行。 您是否将class="append" 添加到您的按钮? 请查看链接jsfiddle 是的,妈妈,我在按钮字段中添加了 class="append" Updated code 以及您的脚本。

以上是关于我想通过单击 + 按钮添加相同的文本字段,但问题是只有第一个 + 按钮工作其他 + 按钮不工作?需要帮助的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时附加新文本字段并通过单击 Laravel 4 中的按钮删除

使用 MXML 或 actionscript 单击按钮添加文本字段

在 iOS 中以编程方式在另一个文本字段下方添加文本字段

单击按钮时输入附件视图

通过单击按钮将文本放在图像上

SENCHA:如何通过单击 SENCHA touch 中的添加/删除按钮动态添加/删除文本字段