Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola Pessoal!!
Estou cirando um código onde tenho que pegar valores de campos gerados automaticamente, de acordo com os registros do banco de dados ex:
no meu form eu tenho 3 campos dinamicos:
<input name="unidade[]" type="text" class="btn" size="4" maxlength="4" id="unidade"/>
<input type="text" name="preco[]" size="8" maxlength="8" class="btn" id="preco"/>
<input type="text" name="total[]" size="8" maxlength="8" class="btn" id="total" />
Este campo Total, recebe os valores assim que forem preenchidos os campos "unidade[]" e "preco[]".
O problema é o seguinte:
no primeiro resultado do loop, funciona. Mas no restante não funciona.
Meu script do Jquery ta assim:
$(document).ready(function(){
$(document).ready(function(){
$('.btn').change(function(){
var unidade = parseFloat($('[id^=unidade]').val())|| 0.0;
var preco = parseFloat($('[id^=preco]').val())|| 0.0;
var total= preco / unidade / 2;
total += total;
$('#total').val(total);
});
});
});
Se alguem puder ajudar, Agradesco, ja pesquizei muito e n sei mais por onde pesquizar.
Desde ja Obrigado.
>
você não pode duplicar IDs. Dispare pelas classes, e então navegue pelo DOM com o this, .parent(), .find() e .next().
Desculpe a ignorância William, poderia postar um exemplo? Não tenho muita intimidade com jquery. Obrigado por responder.
Ola Gente!!
Resolvi o problema aqui. Mas mudei totalmente o meu codigo.
Agora deixei ele assim:
function number_format( number, decimals, dec_point, thousands_sep ) {
var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
var d = dec_point == undefined ? "," : dec_point;
var t = thousands_sep == undefined ? "." : thousands_sep, s = n < 0 ? "-" : "";
var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}
function calcula_preco(id_input) {
// pega o numero identificador dos campos de calculo
id = id_input.split('-')[1];
// transforma o valor base em uma string apropriada para calculo
unidade = $('#unidade-' + id).val().replace(".","").replace(",",".");
// transforma o desconto em uma string apropriada para calculo
preco = $('#preco-' + id).val().replace(".","").replace(",",".");
// calcula a diferenca entre o valor base menos o desconto
total = parseFloat(preco) / parseFloat(unidade);
// coloca o valor total no input em formato da moeda real
$('#total-' + id).val(number_format(total, 2, ',', '.'));
}
So tem agora uma coisa pra resolver.
Quero que quando o reultado da divisao for um numero inteiro tipo:1,99 ele mostre 2 casas decimais ,
e quando o resultado da divisao for ex: 1,9865 ele mostre as 4 casas.
da forma como está ele esta arredondando tudo para utilizar 2 casas decimais.
Se puder dar uma forca agradeço.
você não pode duplicar IDs. Dispare pelas classes, e então navegue pelo DOM com o this, .parent(), .find() e .next().