Duplicar linhas pai x filho

Bom dia, existe alguma maneira de duplicar uma linha da tabela pai x filho? No caso, o usuario vai ter uma linha com vários dados preenchidos e precisa duplicar a linha mantendo esses dados, pois ele vai alterar apenas alguns campos. Tem como fazer isso?

Eu tinha feito uma funçãozinha no JQuery pra isso e estava funcionando certinho.

Mas agora o fluig começou a adicionar novas linhas da tabela pai x filho com um _ na frente do nome do campo, isso quebra a lógica da função.

A função que eu uso pra duplicar é esta, e só não está funcionando direito por causa desse _ na frente do nome do campo.

    $(document).ready(function(){

        $("#tableRequisicao").on("click", ".duplicar", function(){

            console.log("clicou no duplicar");

            // adiciona uma nova linhha na tabela pai x filho e guarda o próximo índice
            var proximoIndice = wdkAddChild('tableRequisicao');

            var contador = 0;

            // cria o array com os dados temporários durante a clonagem da linha
            var campos = new Array(5);
            var objeto = new Array();

            var camposNaoCopiarValor = [ "compValorUnitario", "compValorUnitarioRaw", "compIpi", "compValorIpi", "compValorIpiRaw", "compValorTotal", "compValorTotalRaw", "compFornecedor", "compCodFornecedor", "compDtEntrega"];

            console.log("CAMPOS QUE NAO SERAO COPIADOS" + camposNaoCopiarValor);

            // percorre a linha inteira e faz a coleta dos dados dos inputs e selects
            $(this).closest("tr").find("td input:text,td select").each(function() {

                console.log("CAMPO ENCONTRADO ====> " + $(this).attr("id"));

                campos[contador] = new Array();
                campos[contador]['idOriginal'] = $(this).attr("id");
                campos[contador]['valorOriginal'] = this.value;
                campos[contador]['tipo'] = $(this).attr("type");

                var nomeCampoCru = campos[contador]['idOriginal'].substring(0, campos[contador]['idOriginal'].indexOf('_'));

                console.warn("NOME original CAMPO TESTES ----> " + nomeCampoCru + "\r\n");


                var nomeNovoCampo = nomeCampoCru + '___' + proximoIndice;
                console.error("NOVO INDICE ==========> " + proximoIndice + "\r\n");
                console.warn("NOME original CAMPO TESTES ----> " + nomeNovoCampo + "\r\n");

                // verifica se o campo está na lista de campos a serem copiados o valor
                if( jQuery.inArray( nomeCampoCru, camposNaoCopiarValor ) !== -1 ){

                    // se o tipo de campo for numerico, preenche com zero 
                    if ( campos[contador]['tipo'] == "number" ){

                        campos[contador]['novoValor'] = 0;    

                    }else{

                        campos[contador]['novoValor'] = "";

                    }

                }else{

                    campos[contador]['novoValor'] = campos[contador]['valorOriginal'];


                }

                campos[contador]['novoCampo'] = nomeNovoCampo;

                console.log("NOVO CAMPO => " + campos[contador]['novoCampo'] + " NOVO VALOR ==> " + campos[contador]['novoValor']);
                $("#" + campos[contador]['novoCampo']).val(campos[contador]['novoValor']);

                if ( contador == 0 ){
                    var btnConfirma = '<span><img src="img/icons/approved.png" class="confirmaEdicao" height="25" width="25" title="Confirmar edição de linha duplicada"></span>';

                    $("#" + campos[contador]['novoCampo']).closest("tr").addClass("bg-warning");
                    $("#" + campos[contador]['novoCampo']).closest("tr").find(".acoes").append(btnConfirma);
                    $("#" + campos[contador]['novoCampo']).closest("tr").find(".tipoLinha").val("copia");

                }
                contador++;

            });

            console.log("====================  campos tratados ====================");
            console.log(campos);
            console.log("==================== /campos tratados ====================");
            contador = 0;

        });

        $("#tableRequisicao").on("click", ".confirmaEdicao", function(){

            $(this).closest("tr").removeClass("bg-warning");
            $(this).closest("tr").removeClass("bg-success");
            $(this).closest("tr").addClass("bg-success");
            $(this).hide();

        });

    });
compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags pai filho duplicar campos ou faça a sua própria pergunta.