Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

clickanapolis

Contador de quantidade

Recommended Posts

Pessoal boa tarde, tenho um codigo em javascript que inclui novos campos a um formulario duplicando uma div.

Só que o cliente pediu para que eu limite a quantidade de campos como eu faria isso?

 

function duplicarCampos(){
    var clone = document.getElementById('origem').cloneNode(true);
    var destino = document.getElementById('destino');
    destino.appendChild (clone);
    var camposClonados = clone.getElementsByTagName('input');
    for(i=0; i<camposClonados.length;i++){
        camposClonados[i].value = '';
    }
    }
    function removerCampos(id){
        var node1 = document.getElementById('destino');
        node1.removeChild(node1.childNodes[0]);
    }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, se fosse eu, modificaria a estrutura das funções, para elas se comunicarem entre sí. Usaria orientação ao objeto, assim sendo é mais prático só executar tal ação se um objeto existe ou se um método autoriza, e o mais é que não precisa ficar consultando o documento toda vez que precisar obter algum valor (isso você ganha muito em performace) etc...

Mas, enfim... Isso: camposClonados.length são a quantidade de inputs existentes (use o length toda vez que precisar consultar esse tipo de coisa).

 

Obs.:

- Sua função está criando inputs com o mesmo ID no documento.

- A função removerCampos está dentro da estrutura da função de adicionar.

- Só não mostrei um exemplo porque não sei se você quer clonar todos inputs de um local para outro ou clonar de 1 em 1.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem nesse termo fica simples fazer a coisa veja preparei um exemplo.

Não sei se é bem isso mas está aqui.

 

Spoiler

<div id="origem">
    <input type="text" name="input_1[]"/>
    <input type="text" name="input_2[]"/>
    <input type="text" name="input_3[]"/>
    <input type="text" name="input_4[]"/>
    <input type="text" name="input_5[]"/>
</div>
<button onclick="clonar()">Clonar</button>
<button onclick="remover()">Remover</button>

<div id="destino"></div>

<script>
    var quantidade = 3; // Somente os 3 primeiros
    var origem = document.getElementById('origem'); // Elemento onde estão os inputs
    var destino = document.getElementById('destino'); // Onde vão ser clonados
    var limite, input, i, clone;

    function clonar() {
        if (limite != quantidade) { // O limite foi alcançado
            input = origem.getElementsByTagName('input'); // pegar o input da origem
            for (i = 0; i < quantidade; i++) {
                clone = document.createElement('input'); // criar novo input
                clone.name = input[i].name; // inserir o name do input de origem no novo
                clone.id = 'input_clonado_id_' + i; // adicionar um ID no input novo
                destino.appendChild(clone); // Colocar o novo input no destino
            }
            limite = quantidade; // definir o limite para a quantidade
        }
    }

    function remover() {
        input = destino.getElementsByTagName('input');
        for (i = input.length - 1; i >= 0; i--) {
            input[i].parentNode.removeChild(input[i]);
        }
        limite = 0;
    }
</script>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala pessoal, tudo bem?
       
      Tô tentando fazer um pre-loading, mas não consigo de jeito algum.
      Quero mostrar uma animação enquanto a página é carregada e depois de caregada, esconder a animação e mostrar conteúdo.
       
      Aguém pode me ajudar?
       
      Segue código abaixo
       
       
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0" />  
          <title>PÁGINA LOAD</title>

      <style type="text/css">
      .loadclass {
          border: 2px solid #f3f3f3; /* Light grey */
          border-top: 4px solid #ffc401; /* Blue */
          border-radius: 50%;
          width: 50px;
          height: 50px;
          animation: spin 2s linear infinite;
      }
      @keyframes spin {
          0% { transform: rotate(0deg); }
          100% { transform: rotate(360deg); }
      }
      .conteudo {
          display:none;
      }
      </style>
      <script>
          function loading(){
              document.getElementsByClassName('loadclass')[0].style.display="none";
              document.getElementsByClassName('conteudo').style.display="block";
          }
      </script>
      </head>
      <body onLoad="loading()">
      <div class="loadclass"></div>
      <div class="conteudo">SEU CONTEUDO AQUI DENTRO!!!</div>
      </body>
      </html>
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por belann
      Olá!
       
      Estou fazendo o upload de arquivos com fetch dessa forma
      fetch(url, {
              method: 'POST',
              headers: {'Content-Type': 'multipart/form-data',},
              body: formData 
          }).catch((error) => (console.log("Problemas com o Upload"), error));
       
      estou usando input type=file
      e criando uma const formData = new FormData(); 
      mas não faz e não dá nenhum erro.
      estou fazendo o upload com a url="http://localhost/dashboard/dados".
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.