Soma em Tabela Pai x Filho

erro.PNG Adicionei o código corrigido porém quando fui testar, ele não ta somando, debuguei e segue a imagem.

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Carla, o que faz a função convertStringFloat? A princípio, sem ela, ainda assim era pra funcionar. Peço que tenha atenção no seletor do each.

$("input[id^=txtvalorProduto__").each(function...

Tenta colocar ":" (dois pontos) antes do input, além disso, o seletor para o nome precisa iniciar e finalizar com colchetes, deixando assim:

$(":input[id^='txtvalorProduto__']").each(function...

Por favor, testa e nos retorne.

Helena, segue o HTML e script corrigidos:

HTML:


<!-- Botão para adicionar uma nova linha no Pai x Filho -->
<div class="row">
    <button type="button" class="btn btn-primary" name="btn_addProduto" id="btn_addProduto" onclick="wdkAddChild('tbProdutos');">Adicionar
        Nota Fiscal</button>
</div>

<!-- Tabela Pai x Filho -->
<div class="row">
    <table class="table" id="tbProdutos" tablename="tbProdutos" noaddbutton=true>
        <thead>
            <tr>
                <th>Nº da Nota Fiscal</th>
                <th>Valor</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <input type="text" class="form-control" name="txt_nomeProduto" id="txt_nomeProduto">
                </td>
                <td>
                    <div class="input-group">
                        <div class="input-group-addon">R$</div>
                        <input type="text" class="form-control text-right" name="txt_valorProduto"
                            id="txt_valorProduto" onblur="somaProdutos()">
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
</div>

<!-- Campo com o valor Total dos Produtos -->
<div class="row">
    <div class="form-group col-xs-12 col-sm-12 col-md-12 col-lg-12">
        <input type="text" class="form-control" name="txt_valorTotal" id="txt_valorTotal">
    </div>
</div>

Script:


function somaProdutos(){

    var soma = 0;
    $(":input[id^='txt_valorProduto___']").each(function (index, value) {
           soma = soma + parseFloat($(this).val());

                });

 $("#txt_valorTotal").val(soma.toFixed(2));

    }

Só isso é suficiente. Lembrando que, se a resposta lhe for útil, marque-a como correta. Pode ser a dúvida de outros usuários.

Testa e avisa se funcionou, por favor.

Boa sorte!

consertei, porém o erro continua

Helena, editei a resposta com o script que pode te ajudar.

Helena, Boa noite!

Segue código correto:


// Clique do botão para adicionar linha do Pai x Filho 
$("#btn_addProduto").on("click", function (e) {
    wdkAddChild('tbProdutos');
    somaProdutos();
});

// Soma o valor de todos os produtos ao sair do campo do valor do produto
$("input[id^='txt_valorProduto___']").on("blur", function () {
    somaProdutos();
});

// função para fazer a soma dos valores de todos os produtos
function somaProdutos() {
    var soma = 0;
    // percorre todos os campos Pai x Filho
    // $(document).on("blur", "input[id^='txt_valorProduto___']", function (e) {
    //     soma = soma + parseFloat($(this).val());
    // });

    // A linha abaixo estava errada
    //$("input[id^=txt_valorProduto___").each(function (index, value) {
    // Essa é a correta
    $("input[id^='txt_valorProduto___'"]).each(function (index, value) {
        soma = soma + convertStringFloat($(this).val());
        soma = soma.toFixed(2);
    });

    // alimenta o campo Total com a soma dos valores dos produtos
    $("#txt_valorTotal").text(soma);
}

function convertStringFloat(valor){
    if (valor.trim() == '') {
        valor = 0;
    }
    valor = String(valor);
    if (valor.indexOf(',') == -1) {
    } else {
        valor = String(valor).split(".").join("").replace(",",".");
    }
    valor = parseFloat(valor);

    return valor;
}

Faça um teste e verifique se dá certo.

eu add o código, porém ele continua não somando, eu debuguei e add a imagem aqui

mudei a função convertStringFloat, verifique se dá certo.

Helena, o código que coloquei acima já foi testado e validado, chegou a usar?

eu fiz um seletor e aí consegui, obrigada pela ajuda pessoal!!