Ir ao conteúdo
  • Cadastre-se

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


Ir à solução Resolvido por GabrielSennaMs,

Posts recomendados

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á. 

Link para o comentário
Compartilhar em outros sites

  • Solução

@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

Link para o comentário
Compartilhar em outros sites

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...