Ir para conteúdo

POWERED BY:

Arquivado

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

Emanuela Nardin_206147

campos option não mudam

Recommended Posts

Olá pessoal,

sou nova no forum e em javascript. Estou desenvolvendo um formulario para assinar planos de um serviço e tenho o código abaixo para calcular os valores dos planos. O seguinte: a ultima parte do "vp = 3" não está funcionando. Eu quero que os campos "vrcs", "vchat", "vmaq" e "vsms" sejam vinculados à escolha do numero de operadores "qtd_oper", mas que pode escolehr mais quantidade para estes dois campos "vmaq" e "vsms". Esta ultima opção não está funcionando. O que tem de errado neste código?

Agradeço a ajuda.

...
//calcula o total de cada plano         
    if (vp == 1){
        if(qtd_oper==1){
           qtd_oper=0;
        } else if (qtd_oper > 1){
           qtd_oper = qtd_oper -1;
        }          
    $('#total').val(formatMoeda(plano1*qtd_oper+vrcs+vchat+vmaq+vsms));
    } else if (vp == 2){
        if(vmaq==10){
           vmaq=0;
        } else if (vmaq > 10){
           vmaq = vmaq -10;
        }    
$('#total').val(formatMoeda(plano2*qtd_oper+vrcs+vchat+vmaq+vsms));                
   } else if (vp == 3){
        if ((qtd_oper*10) < vmaq && (qtd_oper*100) == opersms){
           $('#total').val(formatMoeda(plano3*qtd_oper+(vmaq-(qtd_oper*10))));
        } else if ((qtd_oper*100) < opersms && (qtd_oper*10) == vmaq){
          $('#total').val(formatMoeda(plano3*qtd_oper+(opersms-(qtd_oper*100)*0.25)));
        } else if ((qtd_oper*100) < opersms && (qtd_oper*10) < vmaq){
          $('#total').val(formatMoeda(plano3*qtd_oper+(vmaq-(qtd_oper*10))+(opersms-(qtd_oper*100)*0.25)));
   }
   else {
     $('#oper_sms').val(operp*100);
     $('#oper_maq').val(operp*10);
     $('#oper_rcs').val(operp);
     $('#oper_chat').val(operp);
     $('#total').val(formatMoeda(plano3*qtd_oper));
     }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz alguns testes e vi que a primeria condição funciona ao comentar todas as outras:

 

 if ((qtd_oper*10) < vmaq /*&& (qtd_oper*100) == opersms*/){
          $('#total').val(formatMoeda(plano3*qtd_oper+(vmaq-(qtd_oper*10))));
 } /*else if ((qtd_oper*100) < opersms && (qtd_oper*10) == vmaq){
          $('#total').val(formatMoeda(plano3*qtd_oper+(opersms-(qtd_oper*100)*0.25)));
} else if ((qtd_oper*100) < opersms && (qtd_oper*10) < vmaq){
          $('#total').val(formatMoeda(plano3*qtd_oper+(vmaq-(qtd_oper*10))+(opersms-(qtd_oper*100)*0.25)));
}
*/

Se alguem pode me ajudar agradeço :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

É uma lógica bem complexa !

 

Para teste de javascript eu recomendo o navegador Opera, ele mostra a linha exata em que está o erro de sintaxe. Use o atalho "CTRL+Shift+i" para abrir o inspetor de elementos e seleciona a aba "script".

 

Agora, se o problema for um erro de lógica vai ser um pouco mais complicado, recomendo que você teste o conteúdo das varíaveis e as condições, novamente você vai precisar entrar no inspetor de elemento e selecionar a aba console (pode ser o inspetor de elemento do chrome mesmo, o atalho é o mesmo)

 

Você pode usar a função "console.log" para testar o conteúdo das variáveis:

ex:

console.log('---- DEBUGANDO VARÍAVEIS ----');
console.log('qtd_oper => ', qtd_oper);
console.log('vmaq => ', vmaq);
console.log('opersms => ', opersms);

console.log('---- DEBUGANDO CONDIÇÕES IF 1 ----');
console.log('(qtd_oper*10) < vmaq', (qtd_oper*10) < vmaq);
console.log('(qtd_oper*100) == opersms', (qtd_oper*100) == opersms);
console.log('(qtd_oper*10) < vmaq && (qtd_oper*100) == opersms', (qtd_oper*100) == opersms);

console.log('---- DEBUGANDO CONDIÇÕES IF 2 ----');
// aqui vai o resto

// aqui abaixo estão os ifs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido assim: mudei o calculo de uma variável (vsms em lugar de opersms que é só a quantidade e não o preço) e deu certo:

 

else if (vp == 3){
			
  if (vmaq > (qtd_oper*10) && (qtd_oper*100*0.25) == vsms){
     $('#total').val(formatMoeda(plano3*qtd_oper + (vmaq - qtd_oper*10)));
  } else if (vsms > (qtd_oper*100*0.25) && (qtd_oper*10) == vmaq) {
     $('#total').val(formatMoeda(plano3*qtd_oper + (vsms - (qtd_oper*100*0.25))));
  } else if ((qtd_oper*100*0.25) < vsms && (qtd_oper*10) < vmaq) {
     $('#total').val(formatMoeda(plano3*qtd_oper + (vmaq - (qtd_oper*10)) + (vsms - (qtd_oper*100*0.25))));
  } else {
    $('#oper_sms').val(qtd_oper*100);
    $('#oper_maq').val(qtd_oper*10);
    $('#oper_rcs').val(qtd_oper);
    $('#oper_chat').val(qtd_oper);
    $('#total').val(formatMoeda(plano3*qtd_oper));
  }
				
}

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.