Ir ao conteúdo

Javascript Mudar valor de acordo com seleção ou não de checkbox


Ir à solução Resolvido por GabrielSennaMs,

Posts recomendados

Postado

Olá, gente. Primeiramente, peço desculpas caso o título da pergunta não esteja endereçado corretamente, é que não encontrei outra maneira de explicar minha dúvida. Então, estou fazendo um formulário com script de um serviço de táxi aéreo. O usuário seleciona o destino e a origem e de acordo com o que for escolhido, há um preço diferente. Além disso, há uma checkbox que deve ser marcada caso o usuário opte pela passagem de ida e volta, e se for marcada, os campos "data do retorno" e "hora", que originalmente estão desativados, tornam-se disponíveis para a inserção de dados. Se a passagem de ida e volta for escolhida, ainda há um desconto de 30% para o cliente, e esse valor deve mudar se a checkbox for selecionada. Até aí eu consegui fazer; o problema é quando a checkbox é desativada, pois eu queria que o valor também mudasse, voltando para o valor inicial de apenas uma passagem. Contudo, o valor que fica é o de desconto e se a checkbox for selecionada outra vez, ele repete a operação de desconto. Tentei criar a variável "vnormal" para guardar o primeiro valor, mas não obtive sucesso. Como eu posso resolver isso? Segue o código:

<html>
<head>
<meta charset="UTF-8"/>
<title> FLY - Táxi Aéreo </title>
<script type="text/javascript">
	function funcorigem()
{
	origem=window.document.ftaxi.origem.value;
	destino=window.document.ftaxi.destino;
	destino.innerHTML = '';	
		if(origem=="rj")
		{
				option=document.createElement("option");
				option.text=" ";
				destino.add(option);
				option=document.createElement("option");
				option.text="São Paulo";
				destino.add(option);
				option=document.createElement("option");
				option.text="Belo Horizonte";
				destino.add(option);
				option=document.createElement("option");
				option.text="Salvador";
				destino.add(option);
				option=document.createElement("option");
				option.text="Santa Catarina";
				destino.add(option);
		
			}
	if(origem=="sp")
	{
				option=document.createElement("option");
				option.text=" ";
				destino.add(option);
				option=document.createElement("option");
				option.text="Rio de Janeiro";
				destino.add(option);
				option=document.createElement("option");
				option.text="Belo Horizonte";
				destino.add(option);
				option=document.createElement("option");
				option.text="Salvador";
				destino.add(option);
				option=document.createElement("option");
				option.text="Santa Catarina";
				destino.add(option);
				
	}
	if(origem=="bh")
	{
			option=document.createElement("option");
				option.text=" ";
				destino.add(option);
				option=document.createElement("option");
				option.text="Rio de Janeiro";
				destino.add(option);
				option=document.createElement("option");
				option.text="São Paulo";
				destino.add(option);
				option=document.createElement("option");
				option.text="Salvador";
				destino.add(option);
				option=document.createElement("option");
				option.text="Santa Catarina";
				destino.add(option);
	}
	if(origem=="sc")
	{

				option=document.createElement("option");
				option.text=" ";
				destino.add(option);
				option=document.createElement("option");
				option.text="Rio de Janeiro";
				destino.add(option);
				option=document.createElement("option");
				option.text="São Paulo";
				destino.add(option);
				option=document.createElement("option");
				option.text="Belo Horizonte";
				destino.add(option);
				option=document.createElement("option");
				option.text="Salvador";
				destino.add(option);
	}
if(origem=="salv")
	{

				option=document.createElement("option");
				option.text=" ";
				destino.add(option);
				option=document.createElement("option");
				option.text="Rio de Janeiro";
				destino.add(option);
				option=document.createElement("option");
				option.text="São Paulo";
				destino.add(option);
				option=document.createElement("option");
				option.text="Belo Horizonte";
				destino.add(option);
				option=document.createElement("option");
				option.text="Santa Catarina";
				destino.add(option);
	}
}
function totpagar()
{
    origem=window.document.ftaxi.origem.value;
	destino=window.document.ftaxi.destino.value;
        if((origem=="rj")&&(destino=="São Paulo"))
        {
            window.document.ftaxi.valortot.value="250,00";
        }
        if((origem=="rj")&&(destino=="Belo Horizonte"))
        {
            window.document.ftaxi.valortot.value="300,00";
        }
         if((origem=="rj")&&(destino=="Salvador"))
        {
            window.document.ftaxi.valortot.value="350,00";
        }
         if((origem=="rj")&&(destino=="Santa Catarina"))
        {
            window.document.ftaxi.valortot.value="400,00";
        }
        //sp
        if((origem=="sp")&&(destino=="Rio de Janeiro"))
         {
            window.document.ftaxi.valortot.value="250,00";
        }	
        if((origem=="sp")&&(destino=="Belo Horizonte"))
        {
            window.document.ftaxi.valortot.value="200,00";
        }
        if((origem=="sp")&&(destino=="Salvador"))
        {
            window.document.ftaxi.valortot.value="300,00";
        }
        if((origem=="sp")&&(destino=="Santa Catarina"))
        {
            window.document.ftaxi.valortot.value="350,00";
        }
        //bh
        if((origem=="bh")&&(destino=="Rio de Janeiro"))
         {
            window.document.ftaxi.valortot.value="300,00";
        }
        if((origem=="bh")&&(destino=="São Paulo"))
         {
            window.document.ftaxi.valortot.value="200,00";
        }
        if((origem=="bh")&&(destino=="Salvador"))
         {
            window.document.ftaxi.valortot.value="200,00";
        }
         if((origem=="bh")&&(destino=="Santa Catarina"))
         {
            window.document.ftaxi.valortot.value="400,00";
        }
        //salvador
        if((origem=="salv")&&(destino=="Rio de Janeiro"))
         {
            window.document.ftaxi.valortot.value="350,00";
        }
        if((origem=="salv")&&(destino=="São Paulo"))
         {
            window.document.ftaxi.valortot.value="300,00";
        }
        if((origem=="salv")&&(destino=="Belo Horizonte"))
         {
            window.document.ftaxi.valortot.value="200,00";
        }
        if((origem=="salv")&&(destino=="Santa Catarina"))
         {
            window.document.ftaxi.valortot.value="350,00";
        }
        //sc
        if((origem=="sc")&&(destino=="Rio de Janeiro"))
         {
            window.document.ftaxi.valortot.value="400,00";
        }
        if((origem=="sc")&&(destino=="São Paulo"))
         {
            window.document.ftaxi.valortot.value="350,00";
        }
        if((origem=="sc")&&(destino=="Belo Horizonte"))
         {
            window.document.ftaxi.valortot.value="400,00";
        }
        if((origem=="sc")&&(destino=="Salvador"))
         {
            window.document.ftaxi.valortot.value="350,00";
        }	
}
 //desativar e ativar checkbox e mudar preço do valor total
function enabledPassagem()
{
var desconto=0;
valortot=parseInt(window.document.ftaxi.valortot.value);
parseInt(vnormal=window.document.ftaxi.valortot.value);
	if (document.getElementById('passagem').checked == false)
	{
	window.document.ftaxi.valortot=vnormal; 	
	document.getElementById("dataretorno").disabled = true;
	document.getElementById("horaretorno").disabled = true;
	}
	if (document.getElementById('passagem').checked == true)
  	{
	document.getElementById('dataretorno').removeAttribute('disabled'); document.getElementById('horaretorno').removeAttribute('disabled');
	desconto=((valortot*2)*0.7);
 	window.document.ftaxi.valortot.value=desconto;
	}
}
</script>	
</head>
<body>
<form name="ftaxi" method="post" action="formtaxi.asp">
Cliente: <input type="text" name="nomecl" size="50" maxlength="48"><p>
CPF: <input type="text" name="nome" size="20" maxlength="16">   
RG: <input type="text" name="rg" size="13" maxlength="11"><p>
Sexo: <input type="radio" name="sexo" value="masc"> Masculino 
  <input type="radio" name="sexo" value="fem"> Feminino <P>
Origem:  <select name="origem" onchange="funcorigem()"><p>
<option value=" "> Escolha </option>
<option value="rj"> Rio de Janeiro </option>
<option value="sp"> São Paulo </option>
<option value="bh"> Belo Horizonte </option>
<option value="sc"> Santa Cantarina </option> 
<option value="salv"> Salvador </option>    
</select><p>
Data: <input type="date" name="data">   <p>
Hora:  <input type="text" size="8" maxlength="7"><p>
Destino: <select name="destino" onchange="totpagar()"></select><p>
<input type="checkbox" id="passagem" name="passagem" value="passagem" onclick="enabledPassagem()"> Passagem de ida e volta 
<p>
Data de retorno: <input type="date" name="dataretorno" id="dataretorno" disabled/>   
Hora:  <input type="text" name="horaretorno" id="horaretorno"  size="8" maxlength="7" disabled/><p>
Valor a pagar: <input type="text" name="valortot" readonly="true"><p>
<input type="submit" name="enviar" value="Salvar">
<input type="reset" name="limpar" value="Limpar">
</form>
</body>
</html>

Agradeço desde já. 

  • Solução
Postado

@laripereira14 Quando você faz o calculo do desconto você salva o valor com desconto no mesmo input que você pega o valor sem o desconto, nesse caso o melhor seria guardar o valor em uma variável global, para fazer isso basta você declarar uma variável fora de um método(function), assim você pode alterar e pegar ele de qualquer método.

 

Um exemplo:

var valorOriginal;
function enabledPassagem()
{
    var desconto=0;
    valortot = parseInt(window.document.ftaxi.valortot.value);
    parseInt(vnormal=window.document.ftaxi.valortot.value);
    
	if (document.getElementById('passagem').checked == false)
	{
        window.document.ftaxi.valortot.value = valorOriginal; 	
        document.getElementById("dataretorno").disabled = true;
        document.getElementById("horaretorno").disabled = true;
	}

	if (document.getElementById('passagem').checked == true)
  	{
        valorOriginal = window.document.ftaxi.valortot.value;
        document.getElementById('dataretorno').removeAttribute('disabled'); 
        document.getElementById('horaretorno').removeAttribute('disabled');
        desconto=((valortot*2)*0.7);
        window.document.ftaxi.valortot.value = desconto;
	}
}

Cara dá uma olhada no seu código ele tá muito bagunçado, tenta arrumar isso.

Esse site tem o melhor curso online de javascript, e é free, dá uma olha depois!

https://www.w3schools.com/js/default.asp

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!