Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com simulador de empréstimo - Resultado em Moeda R$


guilhedesign

Pergunta

Boa tarde Pessoal...

Estou fazendo um simulador de empréstimo, a pessoa entra com o valor do empréstimo, escolhe o número de parcelas que deseja e clicando em calcular mostra o valor da parcela referente ao empréstimo e quantidade de parcelas...

Cada prestação (24x - 36x - 48x e 60x) tem um valor (ex. 24x = 0.02835)

No campo do valor de empréstimo já coloquei a função para "auto-completar" no formato moeda...

Pois bem, ao fazer o cálculo ele faz corretamente mas não hora de mostrar no campo de resultado ele não mostra em formato moeda, como seria o correto...

Bom, depois que estiver certinho vou enviar esse formulário por e-mail... ok... só para descrever o que eu vou fazer...

Segue link do que estou montando...

** Um detalhe que reparei, quando deixo o valor do contrato em 500,00 por exemplo, ele mostra a parcela "mais ou menos certa", quando coloco 1.500,00 da o erro no resultado.

http://www.totweb.com.br/simulador/auto.html

<html>  
<head>  
    <title>Soma ::..</title>  
    <script type="text/javascript">  
 	    //funcao somar()
        function somar(){  
            var msg="";  
            //faco uma verificacao para que não tenha campos vazios  
            if(document.form_soma.valcontrato.value=="")  
                msg += "Favor entrar com o valor do empréstimo desejado! \n";  
            if(msg!="")   
                alert(msg);  
            else{  
                // aqui pego o valor primeiro campo input  
                var emprestimo = document.form_soma.valcontrato.value;  
if (document.getElementsByName('quantparcela')[0].checked == false && document.getElementsByName('quantparcela')[1].checked == false && document.getElementsByName('quantparcela')[2].checked == false && document.getElementsByName('quantparcela')[3].checked == false){
alert('Por favor selecione a quantidade de parcelas!');
return false;
}
  					if (document.getElementsByName('quantparcela')[0].checked) { 
					quantparcela = 0.02835;
					}
					if (document.getElementsByName('quantparcela')[1].checked) {
					quantparcela = 0.02840;
					}
					if (document.getElementsByName('quantparcela')[2].checked) {
					quantparcela = 0.02845;
					}
					if (document.getElementsByName('quantparcela')[3].checked) {
					quantparcela = 0.02850;
					}
                var resultado = "";  
                // faco o calculo      
                resultado = parseFloat(emprestimo) * parseFloat(quantparcela) + "";  
                resultado = resultado;  
                // mostro o resultado  
                document.form_soma.resultado.value = resultado;  
			}  
        }         
    </script>  
    
<script language="javascript">  
//-----------------------------------------------------  
//Funcao: MascaraMoeda  
//Sinopse: Mascara de preenchimento de moeda  
//Parametro:  
//   objTextBox : Objeto (TextBox)  
//   SeparadorMilesimo : Caracter separador de milésimos  
//   SeparadorDecimal : Caracter separador de decimais  
//   e : Evento  
//Retorno: Booleano  
//Autor: Gabriel Fróes - www.codigofonte.com.br  
//-----------------------------------------------------  
function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){  
    var sep = 0;  
    var key = '';  
    var i = j = 0;  
    var len = len2 = 0;  
    var strCheck = '0123456789';  
    var aux = aux2 = '';  
    var whichCode = (window.Event) ? e.which : e.keyCode;  
    if (whichCode == 13) return true;  
    key = String.fromCharCode(whichCode); // Valor para o código da Chave  
    if (strCheck.indexOf(key) == -1) return false; // Chave inválida  
    len = objTextBox.value.length;  
    for(i = 0; i < len; i++)  
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;  
    aux = '';  
    for(; i < len; i++)  
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);  
    aux += key;  
    len = aux.length;  
    if (len == 0) objTextBox.value = '';  
    if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;  
    if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux;  
    if (len > 2) {  
        aux2 = '';  
        for (j = 0, i = len - 3; i >= 0; i--) {  
            if (j == 3) {  
                aux2 += SeparadorMilesimo;  
                j = 0;  
            }  
            aux2 += aux.charAt(i);  
            j++;  
        }  
        objTextBox.value = '';  
        len2 = aux2.length;  
        for (i = len2 - 1; i >= 0; i--)  
        objTextBox.value += aux2.charAt(i);  
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);  
    }  
    return false;  
}  
</script>

</head>  
<body>  
    <h1>Soma Simples...</h1>   
         // declaro o nome do meu form (form_soma)   
    <form name="form_soma" method="POST">
      Valor do Empr&eacute;stimo R$: 
           <input type="text" name="valcontrato" size="8" maxlength="15" onKeyPress="return(MascaraMoeda(this,'.',',',event))"><br><p>Quantidade de Parcelas: </p>
<table width="250">
  <tr>
    <td><input type="radio" name="quantparcela" value="24" id="24" />
      24x</td>
    <td><input type="radio" name="quantparcela" value="36" id="36" />
      36x</td>
    <td><input type="radio" name="quantparcela" value="48" id="48" />
      48x</td>
    <td><input type="radio" name="quantparcela" value="60" id="60" />
      60x</td>
  </tr>
  </table><br>  
      Parcela R$: 
       <input type="text" name="resultado" size="11" maxlength="25" disabled="true"/>  
      <br>  
      <input type="button" value="Calcular" onClick="somar()"/>  
      <input type="reset" value="Limpar"/>  
    </form>    
</body>  
</html>  
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Guilhe,

1) Você está pegando o valor do emprestimo (tipo 15.500,32) e tentando dar um parseFloat nele... a idéia é boa, mas o resultado é zuado. Se você der parseFloat em 15.500,32 o resultado vai ser 15.500 (quinze e meio, e não quinze mil e quinhentos).

Então logo dessa linha aqui:

// aqui pego o valor primeiro campo input  
var emprestimo = document.form_soma.valcontrato.value;

Adicione essa daqui:

// convertendo o valor do emprestimo de volta para número
emprestimo = emprestimo.replace(/[.]/g,"").replace(/[,]/g,".");

2) Você está usando uma função MascaraMoeda para formatar o campo, mas ela só está sendo chamada no onkeyPress do campo valcontrato. Por isso o resultado do cálculo não fica formatado.

Pra resolver isso, vá nessa linha aqui do seu código:

// mostro o resultado 
document.form_soma.resultado.value = resultado; 

E mude para:

// mostro o resultado
document.form_soma.resultado.value = resultado.toFixed(2); 
MascaraMoeda(document.form_soma.resultado, '.', ',');

O toFixed(2) é necessário porque essa função MascaraMoeda não entende mais de duas casas decimais, e sua conta gerava valores tipo 254.412315232.

3) Porém, a função MascaraMoeda espera um 4º parâmetro (que não existe aqui), então vamos ter que alterá-la:

Vá nessas linhas da função:

var whichCode = (window.Event) ? e.which : e.keyCode; 
if (whichCode == 13) return true;
key = String.fromCharCode(whichCode); // Valor para o código da Chave 
if (strCheck.indexOf(key) == -1) return false; // Chave inválida 

E mude o código para:

if (e) {
    var whichCode = (window.Event) ? e.which : e.keyCode; 
    if (whichCode == 13) return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave 
    if (strCheck.indexOf(key) == -1) return false; // Chave inválida 
}

Espero que você tenta entendido o que eu quis dizer. Se não entender (por favor, pelo menos tente fazer, lol), fiz um fiddle pra você.

;)

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

Bem, o fiddle roda (pelo menos aqui no meu pc) tanto no firefox quanto no chrome. Roda até no IE (!!).

Deve ser alguma coisa com o restante do seu código =\

verdade! no fiddle da certo no chrome, que loko! kkkk

Sou bem "oreia" no java, estou fuçando aqui para criar esse simulador... é muito foda esse campo resultado mostrar o cálculo sozinho, sem precisar clicar no botão de submit (calcular)?

Abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

É javascript. Java é outra coisa ;)

Saber usar onclick? Você poderia usar isso nos radio buttons e chamar a sua função somar() (que de soma não tem nada, lol).

Consegui... kkkk boa!

E me desculpe pelo java (fui triste na tentativa de abreviar!) rs

Vou arrumar os nomes das funções agora, realmente, soma não ficou legal. Muito obrigado pela ajuda. abraço!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...