繁体   English   中英

动态地将输入添加到动态表单

[英]Dynamically add inputs to a dynamic form

我打算在必要时以也在 js 中动态返回的形式添加动态输入。 我正在尝试这样做,但如有必要,它不会添加新的输入。

代码:

for (var i = 0; i < data1.length; i++) { 
 Id = data1[i][0];
 DataRegisto = data1[i][1];
 Cliente = data1[i][2];
 Orcamento = data1[i][3];
 Ref = data1[i][4];
 Designacao = data1[i][5];
 Quantidade = data1[i][6];
 Valor = data1[i][7];

 linha1 += `<div class="input_fields_wrap1">
<div class="form-group col-md-2">  
  <input type="text" class="form-control1" name="Refe[]" value="${Ref}">
  <span class="form-highlight"></span>
  <span class="form-bar"></span>
  <label class="label1" for="Refe">Refª</label>        
</div>
<div class="form-group col-md-2">                       
  <input type="text" class="form-control1" name="Valo[]" value="${Valor}">
  <span class="form-highlight">$</span>                     
  <span class="form-bar"></span>                        
  <label class="label1" for="Valo">Valor</label>        
</div>
<button class="btn btn-warning caixa add_field_button1"><i class="fa fa-plus-square fa-5x taman" aria-hidden="true"></i></button>
</div>`;
$("#retorc1").html(linha1);


$(document).ready(function() {
  var max_fields1 = 100; //maximum input boxes allowed
  var wrapper1 = $(".input_fields_wrap1"); //Fields wrapper
  var add_button1 = $(".add_field_button1"); //Add button ID

  var x1 = 1; //initlal text box count
  $(add_button1).click(function(e) { //on add input button click
    e.preventDefault();
    var length1 = wrapper1.find("input:text").length;

    if (x1 < max_fields1) { //max input box allowed
      x1++; //text box increment

      $(wrapper1).append('<div id="teste1"><div class="form-group col-md-2"><input type="text" class="form-control1" name="Refe[]" /><span class="form-highlight"></span><span class="form-bar"></span><label class="label1" for="Refe">Refª</label></div><div class="form-group col-md-6"><input type="text" class="form-control1" name="Designaca[]" /><span class="form-highlight"></span><span class="form-bar"></span><label class="label1" for="Designaca">Designação</label></div><div class="form-group col-md-2"><input type="text" class="form-control1" name="Qtda[]" /><span class="form-highlight"></span><span class="form-bar"></span><label class="label1" for="Qtda">Quantidade</label></div><div class="form-group col-md-2"><input type="text" class="form-control1 Preco1" name="Valo[]" value="0.00" /><span class="form-highlight">$</span><span class="form-bar"></span><label class="label1" for="Valo">Valor</label></div><button class="remove_field1" style="background-color: #313348;"><span class="fa fa-trash fa-fw" aria-hidden="true"></span></button></div>');
    }
     $('.Preco1').maskMoney({ decimal: '.', thousands: ' ', precision: 2 });
  });

  $(wrapper1).on("click", ".remove_field1", function(e) { //user click on remove text
    e.preventDefault();
    $("#teste1").remove();
    x1--;
  })
 
});

没有返回错误,但是当我单击按钮添加行时,它什么也不做

我正在尝试这种方式:

我将 onclick 添加到按钮:

<button class="btn btn-warning caixa" onclick="adcElemento();"><i class="fa fa-plus-square fa-5x taman" aria-hidden="true"></i></button>

然后我创建了以下 function

function adcElemento() { 
    let myForm;
    myForm = document.getElementById('retorc1');
    document.body.appendChild(myForm);
    let myInput;
    myInput = document.createElement('input');
    myForm.appendChild(myInput);
    myInput.setAttribute('type', 'text');
    myInput.setAttribute('name', 'Refe[]');

}

但它不会向表单添加输入。

动态地将输入添加到动态表单

创建一个form元素:

let myForm;
myForm = document.createElement('form');

form元素添加到文档body

document.body.appendChild(myForm);

一旦您开始着手创建一个元素并将其附加到父元素,您就可以创建一个input元素并将其附加到form元素,其方式与创建form元素并将其附加到body元素:

创建input元素并将其添加到form元素:

let myInput;
myInput = document.createElement('input');
myForm.appendChild(myInput);

创建新的动态元素并将其添加到已呈现的元素是一回事,但如果您想为新的动态元素attribute怎么办?

你可以这样做:

myInput.setAttribute('type', 'text');
myInput.setAttribute('value', Ref);

如果您想将class添加到新的动态元素中怎么办?

你可以这样做:

myInput.classList.add('form-control1');

工作示例:

 function adcElemento() { let myForm = document.getElementById('retorc1'); let myInput = document.createElement('input'); myInput.setAttribute('type', 'text'); myInput.setAttribute('name', 'Refe[]'); myForm.appendChild(myInput); }
 input { display: block; margin: 12px 0 0; }
 <form id="retorc1"> <button type="button" class="btn btn-warning caixa" onclick="adcElemento();">Click Me</button> </form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM