• 0
Sign in to follow this  
carlosmandra

Loop For Em Createelement

Question

Colegas,

estou montando um formulário de cotação de produtos que funciona assim: tem uma linha com 3 campos de texto (cod, prod e desc) e um botão MAIS, pra que seja criada mais uma linha com 3 novos campos, quando o cliente quiser cotar mais produtos. Ele pode fazer quantas vezes quiser. Esse código já consegui implementar aqui, como segue abaixo:

<script>
function ShowMore() {

  newDiv = document.createElement("DIV");
  newDiv.id = "AdditionalContent";

  newInput1 = document.createElement("INPUT");
  newInput1.type = "text";
  newInput1.name = "item1";

  newInput2 = document.createElement("INPUT");
  newInput2.type = "text";
  newInput2.name = "item2";

  newInput3 = document.createElement("INPUT");
  newInput3.type = "text";
  newInput3.name = "item3";

  newText = document.createTextNode("Outra Linha");
  newDiv.insertBefore(newText, null);
  newDiv.insertBefore(newInput1, null);
  newDiv.insertBefore(newInput2, null);
  newDiv.insertBefore(newInput3, null);
  document.getElementById("InitialContent").insertBefore(newDiv, null);
}
</script> 
e na página:
<body>
<p>&nbsp;</p>

<form name="form1" method="post" action="testeRecebe.php">
<div id=InitialContent>
  <p>
    <input name="teste1" type="text" id="teste1" size="30" maxlength="30">
    <input name="teste2" type="text" id="teste2">
    <input name="teste3" type="text" id="teste3">
    <input type=button onclick="ShowMore()" value="mais">
  </p>
  <p>
</p>
</div> 
   <input name="Submit" type="submit" value="Enviar">

</form>
</body>

Ou seja, quando clicado, o botão Mais começa a criar linhas com 3 campos de texto.

O problema é: quando crio 2 ou mais "linhas", minha pagina que recebe os dados só recebe os do campo inicial (que já está criado) e os dados do último campo "virtual" criado, porque eles são criados com o mesmo nome (item1, item2 e item3).

Como eu faço um loop for() pra que, toda vez que o cliente clicar no botão MAIS seja adicionado um underline e um número na frente do nome do campo?

Exemplo:

item1_1 item2_1 item3_1

item1_2 item2_2 item3_2

item1_3 item2_3 item3_3

Há possibilidade?

Valeu!

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

<script>

var indice=1;

function ShowMore() {

newDiv = document.createElement("DIV");

newDiv.id = "AdditionalContent";

newInput1 = document.createElement("INPUT");

newInput1.type = "text";

newInput1.name = "item" + indice;

newInput1.value = newInput1.name;

indice=indice+1;

newInput2 = document.createElement("INPUT");

newInput2.type = "text";

newInput2.name = "item" + indice;

newInput2.value = newInput2.name;

indice=indice+1;

newInput3 = document.createElement("INPUT");

newInput3.type = "text";

newInput3.name = "item" + indice;

newInput3.value = newInput3.name;

indice=indice+1;

newText = document.createTextNode("Outra Linha");

newDiv.insertBefore(newText, null);

newDiv.insertBefore(newInput1, null);

newDiv.insertBefore(newInput2, null);

newDiv.insertBefore(newInput3, null);

document.getElementById("InitialContent").insertBefore(newDiv, null);

}

</script>

coloquei o valor no value somente para você ver quando fizer um teste! é sotirar as linhas:

newInput1.value = newInput1.name;

abraços

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this