Jump to content

POWERED BY:

violin101

PHP - Orientação referente Tabela HTML

Recommended Posts

Caros amigos, saudações.

 

Tenho uma tabela em HTML, que me traz as informações de parcelamento corretamente.

 

Preciso fazer uma validação, mas quando tento somar a coluna que traz valor, a soma faz errada.

 

Como devo fazer para SOMAR a coluna mostrando as casas decimais ?

a tabela está assim:

            success: function(parcelas) {
              const tbody = $("#tbparcs tbody");
              tbody.empty(); // Limpa a tabela antes de adicionar novas linhas

              parcelas.forEach(function(parcela) {        
                let html = "<tr>";
                    html += "<td width='20%' height='10'style='text-align:center;'><input type='date' name='dtaprc[]' class='form-control d-none' value='"+dateSQL(parcela.data_vencimento)+"'><span>"+parcela.data_vencimento+"</span></td>";  
                    <!--Quero somar essa coluna -->
                    html += "<td width='50%' height='10' style='text-align:center;'><input type='text' name='vlrprc[]' class='form-control d-none' value='"+parcela.valor_parcela+"' oninput='formatNumber(this)'><span>"+parcela.valor_parcela+"</span></td>";
                  
                    html += "<td width='15%' height='10' style='text-align:center;'>"+
                            "<button onclick='editarCelulaParcelamento(this)' type='button' class='btn btn-primary btn-editar-parc' style='margin-right: 1%; padding: 1px 2px;' title='Editar'>"+
                            "<i class='fa fa-edit'></i></button>"+
                            "<button type='button' data-save class='btn btn-success btn-salvar-parc' style='margin-right: 1%; padding: 1px 5px;' title='Salvar'>"+
                            "<i class='fa fa-save'></i></button>"+                            
                            "</td>";                       
                html += "</tr>";                                                           

                tbody.append(html);  

                somarparcelas();

              });

            }

 

a função para somar a coluna está assim:
 

      //Função somar Total da Tabela
      function somarparcelas(){
          parcelastotal = 0;
          
          //Preenche o INPUT do parcelastotal          
          $("#tbparcs tbody tr").each(function(){
            parcelastotal = parcelastotal + parseFloat($(this).find("td:eq(1)").text());
          });
          $("input[name=parcelastotal]").val(parcelastotal.toFixed(2));     

      }

//o problema que estou encontrando está no parseFloat.
//o parseFloat traz: 12 e não 12.57

 

 

Grato,

 

Cesar

 

Share this post


Link to post
Share on other sites

Há 3 maneiras

1 Remoção de espaços e substituição de vírgula por ponto.....

 

// Função para somar o total da tabela
function somarparcelas() {
    let parcelastotal = 0;

    // Itera sobre cada linha da tabela no tbody
    $("#tbparcs tbody tr").each(function() {
        // Obtém o texto da célula na segunda coluna (índice 1)
        let valorTexto = $(this).find("td:eq(1) span").text().trim();

        // Remove espaços, substitui vírgula por ponto e converte para float
        let valorNumerico = parseFloat(valorTexto.replace(/\./g, '').replace(',', '.'));

        // Verifica se o valor convertido é um número válido
        if (!isNaN(valorNumerico)) {
            parcelastotal += valorNumerico;
        }
    });

    // Atualiza o valor do input com o total formatado para 2 casas decimais
    $("input[name=parcelastotal]").val(parcelastotal.toFixed(2));
}

2 Uso de Number() com substituição de vírgula por ponto....

 

// Função para somar o total da tabela
function somarparcelas() {
    let parcelastotal = 0;

    // Itera sobre cada linha da tabela no tbody
    $("#tbparcs tbody tr").each(function() {
        // Obtém o texto da célula na segunda coluna (índice 1)
        let valorTexto = $(this).find("td:eq(1) span").text().trim();

        // Substitui vírgula por ponto e converte para número usando Number()
        let valorNumerico = Number(valorTexto.replace(',', '.'));

        // Verifica se o valor convertido é um número válido
        if (!isNaN(valorNumerico)) {
            parcelastotal += valorNumerico;
        }
    });

    // Atualiza o valor do input com o total formatado para 2 casas decimais
    $("input[name=parcelastotal]").val(parcelastotal.toFixed(2));
}

3  Utilização de parseFloat com verificação adicional...

 

// Função para somar o total da tabela
function somarparcelas() {
    let parcelastotal = 0;

    // Itera sobre cada linha da tabela no tbody
    $("#tbparcs tbody tr").each(function() {
        // Obtém o texto da célula na segunda coluna (índice 1)
        let valorTexto = $(this).find("td:eq(1) span").text().trim();

        // Substitui vírgula por ponto, remove caracteres não numéricos e converte para float
        let valorNumerico = parseFloat(valorTexto.replace(/[^\d,-]/g, '').replace(',', '.'));

        // Verifica se o valor convertido é um número válido
        if (!isNaN(valorNumerico)) {
            parcelastotal += valorNumerico;
        }
    });

    // Atualiza o valor do input com o total formatado para 2 casas decimais
    $("input[name=parcelastotal]").val(parcelastotal.toFixed(2));
}

 

Share this post


Link to post
Share on other sites
14 horas atrás, Jack Oliveira disse:

Há 3 maneiras

1 Remoção de espaços e substituição de vírgula por ponto.....

 


// Função para somar o total da tabela
function somarparcelas() {
    let parcelastotal = 0;

    // Itera sobre cada linha da tabela no tbody
    $("#tbparcs tbody tr").each(function() {
        // Obtém o texto da célula na segunda coluna (índice 1)
        let valorTexto = $(this).find("td:eq(1) span").text().trim();

        // Remove espaços, substitui vírgula por ponto e converte para float
        let valorNumerico = parseFloat(valorTexto.replace(/\./g, '').replace(',', '.'));

        // Verifica se o valor convertido é um número válido
        if (!isNaN(valorNumerico)) {
            parcelastotal += valorNumerico;
        }
    });

    // Atualiza o valor do input com o total formatado para 2 casas decimais
    $("input[name=parcelastotal]").val(parcelastotal.toFixed(2));
}

2 Uso de Number() com substituição de vírgula por ponto....

 


// Função para somar o total da tabela
function somarparcelas() {
    let parcelastotal = 0;

    // Itera sobre cada linha da tabela no tbody
    $("#tbparcs tbody tr").each(function() {
        // Obtém o texto da célula na segunda coluna (índice 1)
        let valorTexto = $(this).find("td:eq(1) span").text().trim();

        // Substitui vírgula por ponto e converte para número usando Number()
        let valorNumerico = Number(valorTexto.replace(',', '.'));

        // Verifica se o valor convertido é um número válido
        if (!isNaN(valorNumerico)) {
            parcelastotal += valorNumerico;
        }
    });

    // Atualiza o valor do input com o total formatado para 2 casas decimais
    $("input[name=parcelastotal]").val(parcelastotal.toFixed(2));
}

3  Utilização de parseFloat com verificação adicional...

 


// Função para somar o total da tabela
function somarparcelas() {
    let parcelastotal = 0;

    // Itera sobre cada linha da tabela no tbody
    $("#tbparcs tbody tr").each(function() {
        // Obtém o texto da célula na segunda coluna (índice 1)
        let valorTexto = $(this).find("td:eq(1) span").text().trim();

        // Substitui vírgula por ponto, remove caracteres não numéricos e converte para float
        let valorNumerico = parseFloat(valorTexto.replace(/[^\d,-]/g, '').replace(',', '.'));

        // Verifica se o valor convertido é um número válido
        if (!isNaN(valorNumerico)) {
            parcelastotal += valorNumerico;
        }
    });

    // Atualiza o valor do input com o total formatado para 2 casas decimais
    $("input[name=parcelastotal]").val(parcelastotal.toFixed(2));
}

 

 

amigo Williams, saudações.

show, valeu.

obrigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • By violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • By violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • By violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • By violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.