【问题标题】:append data in div through jQuery [not Woking]通过jQuery在div中追加数据[不工作]
【发布时间】:2021-04-20 10:39:22
【问题描述】:

我想在 div 中附加选择框和文本框,但我的代码不起作用。我尝试了我的结局并学习了其他线程代码,但同样我无法实现目标。 在这里,我展示了我在其中附加数据的单个主 div,但在我的真实案例中,我有动态的 <div class="note" id="23203"> 这就是为什么我提到 div id 这是独一无二的。

当我单击+ 按钮时,我想在appendApp_body 中附加文本框并选择框,如果我单击选择- div 按钮,则同样删除div

请帮助我如何使它正确。

当我点击按钮时我想要

var xMachine = 1;

$('.add_MoreMachine__button').click(function() {
  var qty = $(this).attr("data-qty");
  var maxMachineField = qty;
  if (xMachine < maxMachineField) {
    newrowMachine = '<div class="appendApp_body"><select class="custom-select font-size-sm shadow-none" name="product_name[]"><option>--</option><option>6 AMP (RF)</option></select ><input type="text" class="form-control" maxlength="50" name="productnumber[]" /></div><button type="button" class = "btn btn-danger btn-circle float-right remove_Machinebutton" ><i class="fa fa-minus"></i></button ></div>';
    $('.appendApp_body:last').after(newrowMachine);
  } else {
    alert("Ops...! You have total " + maxMachineField + " allowed fields to fill and now you don't have extra permission to proceed this action. [error: limit-reached]");
    return false;
  }
});


$(".complaint_MachineFor4").on("click", ".remove_Machinebutton", function(e) {
                    e.preventDefault();
                    $(this).closest('<div>').remove();
                    xMachine--;
                });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<div class="note" id="23203">
  <div class="note-body">
    <div class="note-added-on">
      <select style="margin-bottom: 5px;" class="custom-select font-size-sm shadow-none" name="product_id[]">
        <option value="Issue1">Issue1</option>
      </select>
      <div class="appendApp_body">
        <select class="custom-select font-size-sm shadow-none" name="product_name[]">
          <option selected="" value="0">--</option>
          <option>6 AMP (RF)</option>
        </select>
        <input type="text" class="form-control" maxlength="50" name="productnumber[]" />
      </div>

      <button style="width: 100%; margin-top: 10px;" type="button" class="btn btn-success add_MoreMachine__button" data-qty="2"><i class="fa fa-plus"></i></button>
    </div>
  </div>
</div>

【问题讨论】:

    标签: javascript html jquery append


    【解决方案1】:

    如果有多个notes div,您可以使用 $(this).closest(".note-added-on").. 仅在单击按钮的位置附加生成的 div。然后,要删除相同的内容,您可以使用 $(this).prev('.appendApp_body').remove() 删除 appendApp_body div 和 $(this).remove() 删除按钮。

    演示代码

    $('.add_MoreMachine__button').click(function() {
      var xMachine = $(this).closest('.note-added-on').find('.appendApp_body').length; //get length of cloned div
      var maxMachineField = $(this).attr("data-qty");
      //compare
      if (xMachine < maxMachineField) {
        //just add one extra class..`cloned..`
        newrowMachine = '<div class="appendApp_body cloned"><select class="custom-select font-size-sm shadow-none" name="product_name[]"><option>--</option><option>6 AMP (RF)</option></select ><input type="text" class="form-control" maxlength="50" name="productnumber[]" /></div><button type="button" class = "btn btn-danger btn-circle float-right remove_Machinebutton" ><i class="fa fa-minus"></i></button></div>';
        //append inside `note-added-on` div 
        $(this).closest(".note-added-on").append(newrowMachine);
      } else {
        alert("Ops...! You have total " + maxMachineField + " allowed fields to fill and now you don't have extra permission to proceed this action. [error: limit-reached]");
        return false;
      }
    });
    
    
    $(document).on("click", ".remove_Machinebutton", function(e) {
      e.preventDefault();
      $(this).prev('.appendApp_body').remove(); //get prev div
      $(this).remove(); //remove button as well
    });
    .note {
      border: 1px solid blue;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
    <div class="note" id="23203">
      <div class="note-body">
        <div class="note-added-on">
          <select style="margin-bottom: 5px;" class="custom-select font-size-sm shadow-none" name="product_id[]">
            <option value="Issue1">Issue1</option>
          </select>
          <div class="appendApp_body">
            <select class="custom-select font-size-sm shadow-none" name="product_name[]">
              <option selected="" value="0">--</option>
              <option>6 AMP (RF)</option>
            </select>
            <input type="text" class="form-control" maxlength="50" name="productnumber[]" />
          </div>
    
          <button style="margin-top: 10px;" type="button" class="btn btn-success add_MoreMachine__button" data-qty="2"><i class="fa fa-plus"></i></button>
        </div>
      </div>
    </div>
    <div class="note" id="232031">
      <div class="note-body">
        <div class="note-added-on">
          <select style="margin-bottom: 5px;" class="custom-select font-size-sm shadow-none" name="product_id[]">
            <option value="Issue1">Issue1</option>
          </select>
          <div class="appendApp_body">
            <select class="custom-select font-size-sm shadow-none" name="product_name[]">
              <option selected="" value="0">--</option>
              <option>6 AMP (RF)</option>
            </select>
            <input type="text" class="form-control" maxlength="50" name="productnumber[]" />
          </div>
    
          <button style="margin-top: 10px;" type="button" class="btn btn-success add_MoreMachine__button" data-qty="1"><i class="fa fa-plus"></i></button>
        </div>
      </div>
    </div>

    【讨论】:

    • 如何使xMachine默认为1...如果data-qty="1"则不附加下一个文本框..请帮助理解我
    • 只需将 cloned 更改为 appendApp_body 并在更新的代码中添加了这一点。让我知道这是否是您需要的。
    • 如果data-qty 高于1..因为1 div 区域已经存在.....实际上我使用ajax 提交所有数据...如果可能然后添加一个表单,如果我们单击一个按钮,那么所有输入 daa 都将通过 ajax 发送...
    • 根据 data-qty 需要附加多少个 div ?如果是以上答案将正常工作。另外,关于ajax,你可以问另一个问题,如果上面的答案有帮助,你可以投票并接受它。
    • 我可以为这个表单问另一个关于 ajax 的问题,你能帮我吗?您当前的回答真的很有帮助
    猜你喜欢
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多