Adicionei o código corrigido porém quando fui testar, ele não ta somando, debuguei e segue a imagem.
Adicionei o código corrigido porém quando fui testar, ele não ta somando, debuguei e segue a imagem.
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 Paixão 14 de Apr de 2020Helena, editei a resposta com o script que pode te ajudar.
— Alef Vinicius 14 de Apr de 2020Helena, 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
— Helena Paixão 15 de Apr de 2020mudei a função convertStringFloat, verifique se dá certo.
— Gabriel Franco da Rocha Nascimento 15 de Apr de 2020Helena, o código que coloquei acima já foi testado e validado, chegou a usar?
— Alef Vinicius 15 de Apr de 2020eu fiz um seletor e aí consegui, obrigada pela ajuda pessoal!!
— Helena Paixão 16 de Apr de 2020