Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cdfree

Exibir decimal no resultado

Recommended Posts

O script abaixa realiza soma de vários campos input (campoValor), mas o valor decimal esta incorreto, aonde é 9.11 fica 9.1. Como corrigir?

<script type="text/javascript">
        $(function() { 
            $(this).keypress(function() {
var num = 0;
                $(".campoValor").each(function() {
      num += parseFloat($(this).val());
});
                $(" .total ").val(num);
            });
        });
 
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o html tb para simularmos.

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php

for($i=1;$i<=12; $i++)

{

echo "<input type='text' class='campoValor' value='0.00' style='border:0px;text-align:right;border:1px solid blue;'/><br>";

}

echo "<hr style='width:150px;margin-left:0px;'><br><input type='text' class='total'/>";

 

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O script abaixa realiza soma de vários campos input (campoValor), mas o valor decimal esta incorreto, aonde é 9.11 fica 9.1. Como corrigir?

<script type="text/javascript">
        $(function() { 
            $(this).keypress(function() {
var num = 0;
                $(".campoValor").each(function() {
     num += parseFloat($(this).val());
});
                $(" .total ").val(num);
            });
        });
 
</script>
<?phpfor($i=1;$i<=12; $i++)
{
echo "<input type='text' class='campoValor' value='0.00' style='border:0px;text-align:right;border:1px solid blue;'/><br>"; 
}
echo "<hr style='width:150px;margin-left:0px;'><br><input type='text' class='total'/>"; 
?> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não vi erro e não consegui simular aqui.

 

Preenchi os campos e somou corretamente. Quais valores vc usou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahh sim!

Na verdade, o problema/erro é o evento que vc está usando.

 

troque para .keyup(function() {

 

.keyup -> é executado assim que a tecla é levantada(logo após vc digitar)

.keypress, .keydown -> são executados quando a tecla baixa, ou seja, só vai somar o último dígito depois que vc digitar o próximo.

 

Entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue resultado final:

 

<script src="[url=http://code.jquery.com/jquery-1.11.0.min.js]http://code.jquery.com/jquery-1.11.0.min.js"></script>[/url]
<script>
function moeda(z){  
v = z.value;
v=v.replace(/\D/g,"")  //permite digitar apenas números
v=v.replace(/[0-9]{18}/,"inválido")   //limita pra máximo 999.999.999,99
v=v.replace(/(\d{1})(\d{11})$/,"$1.$2")  //coloca ponto antes dos últimos 11 digitos
v=v.replace(/(\d{1})(\d{8})$/,"$1.$2")  //coloca ponto antes dos últimos 8 digitos
v=v.replace(/(\d{1})(\d{5})$/,"$1.$2")  //coloca ponto antes dos últimos 5 digitos
v=v.replace(/(\d{1})(\d{1,2})$/,"$1,$2") //coloca virgula antes dos últimos 2 digitos
z.value = v;
}
</script>
<script type="text/javascript">
        $(function() {
$( "input" ).focus(function(){
$(this).val(' ');
});
            $(this).keyup(function() {
var num = 0;
                $(".campoValor").each(function() {
num  += parseFloat($(this).val().replace('.','').replace(',','.')); 
});
                $(" .total ").val(num).toFixed(3);
            });
        });
 
 
</script>
 
 
<?php
for($i=1;$i<=12; $i++)
{
echo "<input type='text' class='campoValor' value='0.00' style='border:0px;text-align:right;border:1px solid blue;' onKeyUp='moeda(this);'/><br>"; 
}
echo "<hr style='width:150px;margin-left:0px;'><input type='text' class='total'/>"; 
 
?>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.