Ir para conteúdo

POWERED BY:

Arquivado

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

Flamaury

somar valores em reais

Recommended Posts

Pessoal sou totalmente leigo em JS e estou precisando de uma função que some os valores de alguns campos input de um formulario.

 

Fazendo algumas pesquisas encontrei duas funções interessantes, sendo uma que soma dinamicamente os valores digitados no campos (os valores digitados em determinados campos, tem sua soma apresentada automaticamente em um outro campo), porem essa função não aceita valores em reais.

 

<html>  
<head>
<script language=javascript>
window.onload = function (){
	var btn = document.getElementById("soma");
	btn.onkeyup = function somar(){
document.form1.soma.value = eval(document.form1.valor1.value) + eval(document.form1.valor2.value);
}
}
</script>	

<form name=form1>
valor 1:<input type=text name=valor1 value=0 size=3><br>
valor 2:<input type=text name=valor2 value=0 size=3 ><p>

resultado soma: <input id="soma" type=text name=soma value=0 size=6>
</form>
</body>  
</html>

 

 

Também encontrei outra função que transforma os valores digitados nos campos de input, em reais (a função inseri a virgula e o ponto no valor digitado pelo usuario); essa função faz o somatorio dos campos input quanto o botão submit é acionado, porem o valor apresentado no campo4 não esta em moeda (resias)

 

<html>  
<head>  
<script type="text/javascript">  
function id( el ){  
       return document.getElementById( el );  
}  
function getMoney( el ){  
       var money = id( el ).value.replace( ',', '.' );  
       return parseFloat( money )*100;  
}  
function soma()  
{  
       var total = getMoney('campo1')+getMoney('campo2')+getMoney('campo3');  
       id('campo4').value = 'R$ '+total/100;  
}  
</script>  
</head>  
<body>  
       <form action="" method="">  
               <input name="campo1" id="campo1" value="25,60" /><br />  
               <input name="campo2" id="campo2" value="5,15" /><br />  
               <input name="campo3" id="campo3" value="2,63" /><br />  
               <input name="campo4" readonly="readonly" id="campo4" /><br />  
               <input type="submit" name="Cadastrar" value="Cadastrar"  onClick="soma()" /> 
       </form>  
</body>  
</html>  

 

Se alguem puder ajudar com alguma dessas funções ficarei muito grato, principalmente se for na primeira...rs.

 

 

Abraços,

Flamaury

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Amigo, o segudo código é do meu blog.

 

Basta fazer o seguinte:

function soma()  
{  
       var total = getMoney('campo1')+getMoney('campo2')+getMoney('campo3');  
       var str_total = 'R$ '+total/100;       
       id('campo4').value = str_total.replace('.',',');
}

http://wbruno.com.br/2012/06/13/somar-campos-de-formulario-valores-em-reais/

 

 

Porém note que o type do botão, no script original é button

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willian Bruno,

 

Primeiramente obrigado pela ajuda.

Fiz da forma que você monstrou, e funcionou; porem não era bem esse resultado que eu estou tentando alcançar.

 

Pesquisando aqui no forum achei um outro post no qual você ajuda um outro usario com a seguinte function:

<html>
<body> 
<script>function id( el ){        
return document.getElementById( el );
}
function ct_campos( campo ){        
id('campo4').value += campo.value+' ';
}</script>
</head>
<body>       
<input type="text" name="campo1" onblur="ct_campos( this )" /><br />        
<input type="text" name="campo2" onblur="ct_campos( this )" /><br />        
<input type="text" name="campo3" onblur="ct_campos( this )" /><br />        
<input type="text" name="campo4" id="campo4" />
<br />
</body>
</html>
</body>
</html>

 

Peguei essa sua função acima e acrescentei nela uma outra que eu já tinha, e o resultado final foi quase o que eu preciso:

Veja como ficaram as funcoçes:

<html>
<body> 
<script>function id( el ){        
return document.getElementById( el );
}
function ct_campos( campo ){        
id('campo4').value += campo.value+' ';
}

//inserir ponto e virgula em valores
function moeda(z)  {
 v = z.value; 
 v=v.replace(/\D/g,"")  //permite digitar apenas números                
 v=v.replace(/[0-9]{12}/,"inválido")   //limita pra máximo 999.999.999,99                
 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>
</head>
<body>       
<input type="text" name="campo1" onblur="ct_campos( this )"  onKeyUp="moeda(this);" /><br />        
<input type="text" name="campo2" onblur="ct_campos( this )"  onKeyUp="moeda(this);" /><br />        
<input type="text" name="campo3" onblur="ct_campos( this )"  onKeyUp="moeda(this);"/><br />        
<input type="text" name="campo4" id="campo4" />
<br />
</body>
</html>
</body>
</html>

 

Na forma acima, os valores digitados nos campos 1, 2 e 3 são apresentados com o ponto e virgula, e os valores desses 3 campos são concatenados no campo4.

 

ex:

no campo1 é digitado 100. O mesmo apresenta-se como 1,00.

no campo2 é digitado 250. O mesmo apresenta-se como 2,50.

no campo3 é digitado 555. O mesmo apresenta-se como 5,55.

 

O resulta do campo4 é apresentado como 1,00 2,50 5,55.

 

Para que o resultado atenda ao que estou querendo, preciso que os valores dos tres campos sejam somados, e assim o resultado do campo4 será 9,05.

 

Se você, ou alguem puder ajudar em mais essa, ficarei muito grato.

 

Abraços,

 

Flamaury

Compartilhar este post


Link para o post
Compartilhar em outros sites

o segredo está na função getMoney:

        var total = getMoney('campo1')+getMoney('campo2')+getMoney('campo3');  

 

use ela.

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.