Eu tenho um botão.
A dúvida é o seguinte:
Se o código fica assim funciona normalmente. Quando eu clicar no botão chama a função.
[code]
[/code]
Agora se dentro do script eu coloco uma função em java, ele ignora o clique do botão e executa. Ou seja, executa a função sem eu clicar no botão. Isto está certo?
<SCRIPT>
function vai()
{
<%mostrartudo=1;%>
}
</SCRIPT>
sim está correto, vc precisa entender o ciclo de vida da sua página.
quando vc escreve <%alguma coisa%> essa parte é renderizada para código html durante a construção da página, por isso vai executar mesmo vc não chamando ainda a função.
E você conhece alguma maneira de isto só acontecer quando eu clicar no botão?
coincidentemente fiz isso aqui agora a tarde. rs
fiz usando JSF, vc tenta adaptar aí
<rich:panel id="scriptSelecao">
<script type="text/javascript">
function showPopupMap(option){
var pageSelecao = urlBase + '#{mapaMB.pageSelecao}';
var dialogOpts = {
width: 230,
height: 160,
minWidth: 150,
minHeight: 150,
maxWidth: 300,
modal:true,
maxHeight: 300
};
if(option){
$("#popupMap").load(pageSelecao).dialog(dialogOpts);
}else{
$("#popupMap").load(pageSelecao).dialog({modal:true});
}
}
</script>
</rich:panel>
<a4j:jsFunction name="setSelecaoMapaJsMB" render="scriptSelecao" action="#{mapaMB.identificaSelecaoMapa}" oncomplete="showPopupMap();">
<a4j:param name="selecao" assignTo="#{mapaMB.selecaoMapa}" />
</a4j:jsFunction>
o segredo está no render do jsFunction, quando eu executo algo eu mando renderizar o componente panel e meu script está nele, dessa forma ele atualiza o valor do mb.
note que sempre que minha página carregar ele vai ler o valor var pageSelecao = urlBase + ‘#{mapaMB.pageSelecao}’;
na primeira vez ficará null, mas quando usuário clicar no botão, aí eu executo a regra necessário para preencher o mapaMB.pageSelecao e aí dou um “render” forçando o carregamento do penel novamente preenchendo o valor da variável pageSelecao do meu script.