Fórum DESABILITANDO CAMPOS COM JAVASCRIPT #558379

20/06/2016

0

Boa tarde pessoal!

Uma vez vim aqui perguntar sobre como desabilitar campos com javascript, mas ainda estou com uma dificuldade.
A ideia era que dependendo de um select, ele desabilitava alguns campos do form. Um rapaz me ajudou respondendo a minha pergunta.
Apenas o último if está funcionando... Alguém pode me ajudar? Segue o código

            /*desabilita campos */
function fazerAlgumaCoisa() {
    var meuSelect = document.getElementById("meuSelect");
    var opcaoSelecionada = meuSelect.options[meuSelect.selectedIndex].value;
    console.log("Selected " + meuSelect.options[meuSelect.selectedIndex].value);
 
    /*ADIANTAMENTO A FORNECEDORES*/
    if (opcaoSelecionada == 'af') {
        document.getElementById("pais").disabled = true;
        document.getElementById("saldo").disabled = true;
        document.getElementById("calendario2").disabled = true;
        document.getElementById("calendario3").disabled = true;
        
    }else {
        document.getElementById("pais").disabled = false;
        document.getElementById("saldo").disabled = false;
        document.getElementById("calendario2").disabled = false;
        document.getElementById("calendario3").disabled = false;
    }
    
    /*ADIANTAMENTO DE CLIENTES NACIONAIS*/
    if (opcaoSelecionada == 'an'){
        document.getElementById("pais").disabled = true;
        document.getElementById("saldo").disabled = true;
        document.getElementById("calendario2").disabled = true;
        document.getElementById("calendario3").disabled = true;
    } else {
        document.getElementById("pais").disabled = false;
        document.getElementById("saldo").disabled = false;
        document.getElementById("calendario2").disabled = false;
        document.getElementById("calendario3").disabled = false;
    }
    /*ADIANTAMENTO DE CLIENTES NO EXTERIOR*/
    if(opcaoSelecionada == 'ace'){
       document.getElementById("cep").disabled = true;
       document.getElementById("num").disabled = true;
       document.getElementById("bairro").disabled = true;
       document.getElementById("cid").disabled = true;
       document.getElementById("uf").disabled = true;
       document.getElementById("cliente").disabled = true;
       document.getElementById("saldo").disabled = true;
       document.getElementById("calendario2").disabled = true;
       document.getElementById("calendario3").disabled = true;
    } else {
       document.getElementById("cep").disabled = false;
       document.getElementById("num").disabled = false;
       document.getElementById("bairro").disabled = false;
       document.getElementById("cid").disabled = false;
       document.getElementById("uf").disabled = false;
       document.getElementById("cliente").disabled = false;
       document.getElementById("saldo").disabled = false;
       document.getElementById("calendario2").disabled = false;
       document.getElementById("calendario3").disabled = false;
    }
    
    /*ADVOGADOS*/
    if(opcaoSelecionada == 'adv'){
       document.getElementById("pais").disabled = true;
       document.getElementById("saldo").disabled = true;
       document.getElementById("calendario3").disabled= true;
    }
    else{
       document.getElementById("pais").disabled = false;
       document.getElementById("saldo").disabled = false;
       document.getElementById("calendario3").disabled= false;
    }
    
    /*APLICAÇÕES FINANCEIRAS*/
    if(opcaoSelecionada == 'apf'){
       document.getElementById("pais").disabled = true;
       document.getElementById("saldo").disabled = true;
       document.getElementById("calendario2").disabled = true;
       document.getElementById("calendario3").disabled= true; 
    }
    else{
       document.getElementById("pais").disabled = false;
       document.getElementById("saldo").disabled = false;
       document.getElementById("calendario2").disabled = false;
       document.getElementById("calendario3").disabled= false;  
    }
    
    /*ATUALIZAÇÃO DE ADVOGADOS*/
    if(opcaoSelecionada == 'aadv'){
       document.getElementById("pais").disabled = true;
       document.getElementById("saldo").disabled = true;
    }
    else{
       document.getElementById("pais").disabled = false;
       document.getElementById("saldo").disabled = false;
    }
    
    /*BANCOS*/
    if(opcaoSelecionada == 'bancos'){
       document.getElementById("pais").disabled = true;
       document.getElementById("saldo").disabled = true;
       document.getElementById("calendario2").disabled = true;
       document.getElementById("calendario3").disabled= true; 
    }
    else{
       document.getElementById("pais").disabled = false;
       document.getElementById("saldo").disabled = false;
       document.getElementById("calendario2").disabled = false;
       document.getElementById("calendario3").disabled= false;  
    }
    
    /*CLIENTES ESTRANGEIROS*/
        if(opcaoSelecionada == 'ce'){
       document.getElementById("cep").disabled = true;
       document.getElementById("num").disabled = true;
       document.getElementById("bairro").disabled = true;
       document.getElementById("cid").disabled = true;
       document.getElementById("uf").disabled = true;
       document.getElementById("cliente").disabled = true;
       document.getElementById("saldo").disabled = true;
       document.getElementById("calendario2").disabled = true;
       document.getElementById("calendario3").disabled = true;
        }
        else {
       document.getElementById("cep").disabled = false;
       document.getElementById("num").disabled = false;
       document.getElementById("bairro").disabled = false;
       document.getElementById("cid").disabled = false;
       document.getElementById("uf").disabled = false;
       document.getElementById("cliente").disabled = false;
       document.getElementById("saldo").disabled = false;
       document.getElementById("calendario2").disabled = false;
       document.getElementById("calendario3").disabled = false;
        }
        
        /*CLIENTES NACIONAIS*/
        if(opcaoSelecionada == 'cn'){
            document.getElementById("pais").disabled = true;
            document.getElementById("cliente").disabled = true;
            document.getElementById("calendario2").disabled = true;
            document.getElementById("calendario3").disabled = true;
        }
        else{
            document.getElementById("pais").disabled = false;
            document.getElementById("cliente").disabled = false;
            document.getElementById("calendario2").disabled = false;
            document.getElementById("calendario3").disabled = false;
        }
        
        /*ESTOQUES EM PODER DE TERCEIROS*/
        if(opcaoSelecionada == 'et'){
            document.getElementById("pais").disabled = true;
            document.getElementById("saldo").disabled = true;
            document.getElementById("calendario2").disabled = true;
            document.getElementById("calendario3").disabled = true;
        }
        else {
            document.getElementById("pais").disabled = false;
            document.getElementById("saldo").disabled = false;
            document.getElementById("calendario2").disabled = false;
            document.getElementById("calendario3").disabled = false;  
        }
        
        /*FORNECEDORES NACIONAIS*/
        if(opcaoSelecionada == 'fn'){
            document.getElementById("pais").disabled = true;
            document.getElementById("cliente").disabled = true;
            document.getElementById("saldo").disabled = true;
            document.getElementById("calendario2").disabled = true;
            document.getElementById("calendario3").disabled = true;
        }
        else{
            document.getElementById("pais").disabled = false;
            document.getElementById("cliente").disabled = false;
            document.getElementById("saldo").disabled = false;
            document.getElementById("calendario2").disabled = false;
            document.getElementById("calendario3").disabled = false;
        }
        
        /*FORNECEDPRES ESTRANGEIROS*/
        if(opcaoSelecionada == 'fe'){
            document.getElementById("cep").disabled = true;
            document.getElementById("num").disabled = true;
            document.getElementById("bairro").disabled = true;
            document.getElementById("cid").disabled = true;
            document.getElementById("uf").disabled = true;
            document.getElementById("cliente").disabled = true;
            document.getElementById("saldo").disabled = true;
            document.getElementById("calendario2").disabled = true;
            document.getElementById("calendario3").disabled = true;
        }
        else{
            document.getElementById("cep").disabled = false;
            document.getElementById("num").disabled = false;
            document.getElementById("bairro").disabled = false;
            document.getElementById("cid").disabled = false;
            document.getElementById("uf").disabled = false;
            document.getElementById("cliente").disabled = false;
            document.getElementById("saldo").disabled = false;
            document.getElementById("calendario2").disabled = false;
            document.getElementById("calendario3").disabled = false;
        }
        
        /*PARTES RELACIONADAS*/ 
        if(opcaoSelecionada == 'pr'){
            document.getElementById("cep").disabled = true;
            document.getElementById("num").disabled = true;
            document.getElementById("bairro").disabled = true;
            document.getElementById("cid").disabled = true;
            document.getElementById("uf").disabled = true;
            document.getElementById("cliente").disabled = true;
            document.getElementById("saldo").disabled = true;
            document.getElementById("calendario2").disabled = true;
            document.getElementById("calendario3").disabled = true;
        }
        else{
            document.getElementById("cep").disabled = false;
            document.getElementById("num").disabled = false;
            document.getElementById("bairro").disabled = false;
            document.getElementById("cid").disabled = false;
            document.getElementById("uf").disabled = false;
            document.getElementById("cliente").disabled = false;
            document.getElementById("saldo").disabled = false;
            document.getElementById("calendario2").disabled = false;
            document.getElementById("calendario3").disabled = false; 
        }
        
   
    };
       
Larissa Moller

Larissa Moller

Responder

Post mais votado

20/06/2016

Você tem um problema de lógica aqui.

Tem muitos IFs um em baixo do outro. Dessa forma, a execução do código sempre vai cair no else do último if, caso não satisfaça a condição dele.

Você poderia rever a lógica de funcionamento da sua tela, trocar a condição de texto para constantes numéricas e usar um switch, ou então usar aninhar todos os IFs do seu algorítmo para evitar que o else de uma condição altere o else da condição anterior.

Eduardo Monteiro

Eduardo Monteiro
Responder

Gostei + 1

Mais Posts

20/06/2016

Jothaz

Concordo com nosso amigo Eduardo Monteiro S. de Sousa que seu cógido esta muito confuso e sugiro que tente melhorá-lo para um melhor entendimento e inclusive facilitar a juda.

Por exemplo existem dois testes (ifs) apra verificar opcaoSelecionada == 'af' e opcaoSelecionada == 'an' sendo que o que vai ser habilitado e desabilitado sãoos mesmo campos então a melhor prática é usar um OR no IF e unir o que dese ser feito. Assim você otimiza a execução e facilita a leitura do código.

Veja como pode ser feito.

    /*ADIANTAMENTO A FORNECEDORES*/
	
	//Use o OR || para testar as duas condições.
    if (opcaoSelecionada == 'af' || opcaoSelecionada == 'an') {
        document.getElementById("pais").disabled = true;
        document.getElementById("saldo").disabled = true;
        document.getElementById("calendario2").disabled = true;
        document.getElementById("calendario3").disabled = true;
        
    }else {
        document.getElementById("pais").disabled = false;
        document.getElementById("saldo").disabled = false;
        document.getElementById("calendario2").disabled = false;
        document.getElementById("calendario3").disabled = false;
    }



Isto poderia ser feito para opcaoSelecionada == 'ce' e opcaoSelecionada == 'ace' que no meu entendidmento são os mesmo campos a serem habilitados e desabilitados.

Outro detalhe é que neste caso acho que seria mais indicado usar o if.... else if.. (ou memso switch) pois usando a estrutura que você esta usando ao não entrar no if vai deireto para o else e habilitar campos que foi desabilitado em um if anterior.

Finalizando acho aconselhavel que você leia mais sobre os comandos do JavaScript e tente absorver os concetios básicos de cada um, pois do contrário serpa frustrante e consativo.

Tente agrupar as condições que tenham de manipular os mesmos campos.
Subsitua o if .. else por if .. else if.
Caso tenha dúvida poste-as.


JavaScript If...Else if ... Statements

The JavaScript Switch Statement
Responder

Gostei + 1

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar