Boa noite!
Ainda estou com a mesma dúvida … postei um tempo atrás mas não obtive retorno se alguém puder ajudar desde ja agradeço!
Seu if está errado:
function habilita(){
if (document.getElementById('cadastroEmpresaReceitaForm:check').checked = true){
document.getElementById('cadastroEmpresaReceitaForm:textArea').disabled = false;
}
}
para comparar voce deve usar o operador ‘==’ e não apenas ‘=’.
Para ver como usar um checkbox como flag veja esse post: http://programadorprofissional.blogspot.com.br/2012/09/marcardesmarcar-todos-checkboxes-com.html
só que ao inves de marcar outros checkboxes voce dá o disabled=true ou = false no textarea.
att
Pequeno exemplo:
<html>
<head>
<script type="text/javascript">
function habilitar(){
if(document.getElementById('check').checked){
document.getElementById('textArea').disabled = true;
} else {
document.getElementById('textArea').disabled = false;
}
}
</script>
</head>
<body>
<label style="cursor: pointer;">
<input type="checkbox" id="check" onclick="habilitar();" /> Desabilitar/Habilitar
</label><br/>
<textarea id="textArea" cols="30" rows="10" >
</textarea>
</body>
</html>
Como dito pelo amigo acima, seu if está sendo atribuido um valor ao elemento, use == ao invez de = para fazer comparações.
Muito obrigado linconti e Gustavo Marques pela ajuda!
Consegui resolver aqui o problema ficou assim:
no meu caso o textArea ja vinha como disabled=“true” ai foi só mudar a logica!
function habilitar(){
if(document.getElementById('cadastroEmpresaReceitaForm:check').checked){
document.getElementById('cadastroEmpresaReceitaForm:textArea').disabled = false;
} else {
document.getElementById('cadastroEmpresaReceitaForm:textArea').disabled = true;
}
}
mas tem uma coisa que me deixou curioso o código JavaScript só funcionou quando coloquei o nome do form sabem me dizer o porque?
o id do seu textarea foi renderizado como cadastroEmpresaReceitaForm:textArea. Por isso você teve que colocar assim.
Saquei!
Obrigado.