H:commandButton sem submit

1 resposta
A

Pessoal eu tenho um h:commandButton que chama um rich:modalPanel, esse rich:modalPanel tem um progressbar dentro dele... preciso q minha pagina so seja subimetida quando o progress acabar!!! como eu posso juntar essas coisas...
o meu codigo esta assim:

<script>

		//<![CDATA[
		        var counter = 1;
		        var step = 1;
		        var interval = 100;
		        var intervalID;
		            function updateProgress(i) {
		                $('form:progressBar').component.setLabel(counter*step + ' %');
		                $('form:progressBar').component.setValue(counter*step);
		                if ((counter++) > 100 / step){
		                	counter = 1;
		                	window.clearInterval(intervalID);

		                }
		            }
		            
		            function startProgress(){
		                counter=1;
		                $('form:progressBar').component.enable();
		                $('form:progressBar').component.setValue(1);
		                intervalID = setInterval(updateProgress,interval);
		            }
		//]]> 
      </script>

		<div style="text-align: center" id="div1">
				    <rich:modalPanel id="modelPanel" width="350" height="100">
				        <f:facet name="header">
				            <h:panelGroup>
				                <h:outputText value="Modal Panel" />
				            </h:panelGroup>
				        </f:facet>
				        <f:facet name="controls"></f:facet>

				          <rich:progressBar mode="client" id="progressBar" >
				          	<h:outputText value="null"/>
				          </rich:progressBar>

				    </rich:modalPanel>					
				
					<h:commandButton type="button" styleClass="buttonFormulario" value="Ok" id="btnOk" onclick="startProgress();" >
						<rich:componentControl for="modelPanel" attachTo="btnOk" operation="show" event="onclick"/>
					</h:commandButton>

				</div>

Obrigado a todos!

1 Resposta

rponte

Bem, ao meu ver o correto seria submeter o formulário, exibir a barra de progresso e somente esconde-la quando o response chegar, mas talvez teu caso seja bem especifico…

Existem algumas soluções:

Neste caso você poderia se utilizar de uma variável global em javascript, assim no primeiro click você carregaria a barra de progresso, e depois de terminado você alteraria essa variável e clicaria no botão novamente através de Javascript:
document.getElementById(“meuBotao”).click();

Ou você pode ter um botão escondido que realmente executa o submit:
<a4j:commandButton … id=“meuBotao” style=“display:none;” />

E executaria ele no fim da barra de progresso através de javascript:
document.getElementById(“meuBotao”).click();

Parecido com o 1o caso você poderia chamar uma function que ficasse em loop infinito até que a barra de progresso termine, algo como:
<h:commandButton type=“button” styleClass=“buttonFormulario” value=“Ok” id=“btnOk” onclick=“startProgress();ficaEmLoopAteABarraDeProgressoTerminar();” >

Algo assim. Espero que uma delas te sirva ou ao menos te dê uma luz.
Abraços e boa sorte.

Criado 22 de abril de 2008
Ultima resposta 22 de abr. de 2008
Respostas 1
Participantes 2