Logo Hardware.com.br
Flavio Tinte
Flavio Tinte Novo Membro Registrado
9 Mensagens 0 Curtidas

Habilitar/Desabilitar Checkbox

#1 Por Flavio Tinte 01/09/2008 - 17:43

Boa tarde galera,

minha dúvida é:

tenho 5 chkbox, qndo o 1º estiver selecionado, os outros 4 devem ser desabilitados, mas ao clicar removendo a seleçao do 1º, os outros serao habilitados para poderem ser selecionados. Já consegui desabilitá-los qndo clico no 1º chkbox, mas qndo removo sua seleçao, os outros continuam desabilitados.

fiz essa função...:


function confere()
{
if (document.getElementById('ck_permissao').disabled = true)
{
document.getElementById('ck_incluir').disabled = true;
document.getElementById('ck_excluir').disabled = true;
document.getElementById('ck_alterar').disabled = true;
document.getElementById('ck_verificar').disabled = true;
document.getElementById('ck_permissao').disabled = false;
}

if (document.getElementById('ck_permissao').disabled = false)
{
document.getElementById('ck_incluir').enabled = true;
document.getElementById('ck_excluir').enabled = true;
document.getElementById('ck_alterar').enabled = true;
document.getElementById('ck_verificar').enabled = true;
document.getElementById('ck_permissao').enabled = true;
}

}


se puderem me ajudar...

Responder Tópico
mcv
mcv Veterano Registrado
1.2K Mensagens 40 Curtidas
#4 Por mcv
01/09/2008 - 17:58

Não entendi se o problema foi resolvido, mas se não funciona mesmo corrigindo para == é porque alguma parte do código está com a lógica incorreta.

Veja que da forma como você tinha feito a condição será sempre falsa: if (document.getElementById('ck_permissao').disabled = false)E essa(document.getElementById('ck_permissao').disabled = true)Será sempre verdadeira.

Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#6 Por Fergo
01/09/2008 - 18:13

Não existe a propriedade "enabled", por isso o segundo trecho do seu código não funciona. Esse código deve funcionar:


function confere()
{
if (document.getElementById('ck_permissao').disabled == true)
{
document.getElementById('ck_incluir').disabled = true;
document.getElementById('ck_excluir').disabled = true;
document.getElementById('ck_alterar').disabled = true;
document.getElementById('ck_verificar').disabled = true;
document.getElementById('ck_permissao').disabled = false;
}

if (document.getElementById('ck_permissao').disabled == false)
{
document.getElementById('ck_incluir').disabled = false;
document.getElementById('ck_excluir').disabled = false;
document.getElementById('ck_alterar').disabled = false;
document.getElementById('ck_verificar').disabled = false;
document.getElementById('ck_permissao').disabled = false;
}

}
Apenas como complemento: quando se utiliza texto na forma de strings com uma sequência de caracteres (palavra), costuma-se usar áspas ao invés de apóstrofos. Normalmente se utiliza o apóstrofo quando sfaz referência à um único caractere ("meutexto" e 'A' por exemplo).

Fergo

Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#8 Por Fergo
01/09/2008 - 18:23

Eu não sei como está o resto do seu código, mas analisando apenas essa função nota-se que o "ck_permissão" nunca vai estar desativado (considerando que seu estado padrão é ativo), ou seja, ele nunca vai entrar no primeiro IF. Talvez isso esteja causando algum problema na lógica do seu código.

Fergo

Flavio Tinte
Flavio Tinte Novo Membro Registrado
9 Mensagens 0 Curtidas
#9 Por Flavio Tinte
01/09/2008 - 18:32

desculpem-me, estava fazendo uns testes e copiei o codigo sem corrigir, na verdade eu nao quero que o "ck_permissao" seja desabilitado, ele é qm vai dizer se os outros checkbox estarao ou nao desabilitados/habilitados, caso ele esteja selecionado ou não.. =)
[html]
function confere()
{
if (document.getElementById('ck_permissao').disabled = true)
{
document.getElementById('ck_incluir').disabled = true;
document.getElementById('ck_excluir').disabled = true;
document.getElementById('ck_alterar').disabled = true;
document.getElementById('ck_verificar').disabled = true;
}

if (document.getElementById('ck_permissao').disabled = false)
{
document.getElementById('ck_incluir').disabled = false;
document.getElementById('ck_excluir').disabled = false;
document.getElementById('ck_alterar').disabled = false;
document.getElementById('ck_verificar').disabled = false;
}

}
[html]
desse jeito, qndo seleciono o "ck_permissão", os outros chkbox sao desabilitados, mas qndo clico removendo a seleçao, os outros continuam desabilitados....

Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#11 Por Fergo
01/09/2008 - 18:35

Você não está confundindo a propriedade "disabled" com "checked"? Pois depois que você desabilita um checkbox, você não consegue mais marcá-lo ou desmarcá-lo clicando nele, já que ele estaria desativado.
Mas se possível, aceite a sugestão do mcv e poste um trecho mais amplo do código, que envolvam as rotinas que se relacionam com esses checkboxes.

Fergo

Flavio Tinte
Flavio Tinte Novo Membro Registrado
9 Mensagens 0 Curtidas
#12 Por Flavio Tinte
01/09/2008 - 18:39

nessa linha, chamo a function confere() no clique do chkbox:


<input name="ck_permissao" type="checkbox" id="ck_permissao" value="checkbox" onclick="return confere()" />

código da funcao:

function confere()
{
if (document.getElementById('ck_permissao').disabled = true)
{
document.getElementById('ck_incluir').disabled = true;
document.getElementById('ck_excluir').disabled = true;
document.getElementById('ck_alterar').disabled = true;
document.getElementById('ck_verificar').disabled = true;
}

if (document.getElementById('ck_permissao').disabled = false)
{
document.getElementById('ck_incluir').disabled = false;
document.getElementById('ck_excluir').disabled = false;
document.getElementById('ck_alterar').disabled = false;
document.getElementById('ck_verificar').disabled = false;
}

}

imagem gerada:
Lista de Menus
Permissão
Incluir
Excluir
Alterar
Verificar
Opção









qndo selecionei 'ck_permissao', os outros foram desabilitados, mas qndo clico novamente retirando a seleçao, eles continuam desabilitados...:

Lista de Menus
Permissão
Incluir
Excluir
Alterar
Verificar
Opção







Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#14 Por Fergo
01/09/2008 - 18:43

Nesse caso você está comparando a propriedade errada
Você está analisando se o ck_permissao está ativado/desativado, que é diferente de estar marcado/desmarcado.

Altere a condição dos IFs de "disabled" para "checked".

if (document.getElementById("ck_permissao&quot.checked = ...)
Fergo

Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.