DESABILITANDO CAMPOS COM JAVASCRIPT
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
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
Curtidas 0
Melhor post
Eduardo Monteiro
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.
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.
GOSTEI 1
Mais Respostas
Jothaz
20/06/2016
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.
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
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
GOSTEI 1