Versão atual:

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();

        });

    });

Versão (1):

Ver a versão formatada

Duplicar linhas pai x filho

Comentário

new question