Problema para habilitar/desabilitar botões

Olá a todos,

Tenho uma página JSP e nela existe uma variável Java chamada liberado. Enquanto essa variável liberado for false dois botões da página devem ficar invisíveis mas quando a variável for passada para true os botões devem ficar a mostra.

Fiz assim, no body coloquei para ocultar os botões:

os botões são do tipo submit:

O javascript para ocultar e mostrar é esse:

Notei que quando passava a variável para true ele executava a função mostrabotoes, mostrava os botões rapidamente e os deixava invisíveis de novo. Então eu fiz a função mostrabotoes ser recursiva chamando ela mesma para ver se ficava mostrando os botões mas mesmo assim não rolou. Eles não estão aparecendo mesmo a variável liberado estando como true.

Alguma sugestão?

na funcao mostrabotoes coloque “block” no lugar de none

Tentei colocar block mais não deu certo também. Alguma outra sugestão? valeu

[code]
function mostrabotoes(jspParam){
while(jspParam == true){
document.getElementById(‘confirmar’).style.display= ‘block’;
document.getElementById(‘desistir’).style.display= ‘block’;
}
mostrabotoes(’<%=liberado%>’);
}

function ocultarInicial(){
document.getElementById(‘confirmar’).style.display= ‘none’;
document.getElementById(‘desistir’).style.display= ‘none’;
}
[/code]

tenta assim

Eu não consegui fazer funcionar de jeito nenhum para ocultar e mostrar os botões, então tentei desativá-los e ativá-los, mas não está funcionando direito. Coloquei a função ocultarInicial no onLoad da página, a função mostrarBotoes fica sendo chamada pela página e a função ocultarBotoes está no onClick dos botões que devem aparecer e sumir. Não está funcionando nada…rs

<script language="javascript">
function mostrarBotoes(jspParam){
	if(jspParam=='true'){
		document.getElementById('confirmar').disabled = false;
		document.getElementById('desistir').disabled = false;
		history.go(0);
	}
}

function ocultarBotoes(jspParam){
	if(jspParam!='true'){
		document.getElementById('confirmar').disabled = true;
		document.getElementById('desistir').disabled = true;
		<%
		getServletContext().setAttribute("liberado", "false");
		liberado = (String) getServletContext().getAttribute("liberado");
		%>
		//history.go(0);
	}
}

function ocultarInicial(jspParam){
	if(jspParam!='true'){
		document.getElementById('confirmar').disabled = true;
		document.getElementById('desistir').disabled = true;
	}
}

Tem um jeito mais fácil de ocultar e mostrar os botões ou desativar e ativar?

Então galera,

Consegui sem precisar usar javascript, em jsp criei uma variável boolean e seto ela para true ou false dependendo de algumas ações do usuário:

boolean liberado = false;

Dai exibo os botões se a variável for true, senão não exibe:

if(liberado == true){		
	%>
		<td>
		<input type="submit" name="acao" value="Confirmar" />
		</td>
		<td>
		<input type="submit" name="acao" value="Desistir" />	
		</td>
	<%}%>

Fica a dica para quem tiver o mesmo problema. Obrigado a quem tentou ajudar =)

[quote=bruno_r_santana]Então galera,

Consegui sem precisar usar javascript, em jsp criei uma variável boolean e seto ela para true ou false dependendo de algumas ações do usuário:

boolean liberado = false;

Dai exibo os botões se a variável for true, senão não exibe:

if(liberado == true){		
	%>
		<td>
		<input type="submit" name="acao" value="Confirmar" />
		</td>
		<td>
		<input type="submit" name="acao" value="Desistir" />	
		</td>
	<%}%>

Fica a dica para quem tiver o mesmo problema. Obrigado a quem tentou ajudar =)[/quote]

De fato os botões não iriam aparecer nunca!
Você tá executando uma função do javascript “getElementById”, que serve para voce executar uma ação em um determinado elemento com o id especificado, sendo que nos botões você
não os deu um id.
Os botões deveriam ficar assim:

<input type="submit" name="acao" id="confirmar" value="Confirmar" />  
<input type="submit" name="acao" id="desistir" value="Desistir" />  

e o javascript:

    <script language="javascript">  
    function acaoBotao(jspParam){  
        if(jspParam){  
            document.getElementById('confirmar').style.display= 'block' ;  
            document.getElementById('desistir').style.display= 'block';  
            history.go(0);  
        }  
        else{
            document.getElementById('confirmar').style.display= 'none' ;  
            document.getElementById('desistir').style.display= 'none'; 
        }
    }  

Com jQuery isto ficaria menor e melhor, mas o tratamento deste tipo de situação não pode ser feito por javascript, tendo em vista que com o
firebug qualquer um burlaria sua aplicação com facilidade.
O tratamento correto deve ser feito a nivel de servidor com o próprio JSP mesmo.