Pergunta

Estou desenvolvendo aplicações web usando a4j, Richfaces. Um dos minha exigência é, eu preciso verificar se o usuário tiver alterado quaisquer valores na forma quando ele está tentando navegar para fora da página.

Eu tenho botões Salvar e Cancelar na página. Eu estou usando o botão a4j:command para cancelar a funcionalidade. Ao clicar no botão de cancelamento deve fazer a seguir as coisas

  1. Verifique se o usuário tiver modificado qualquer coisa na forma (isso eu estou fazendo usando javascript e tem uma bandeira se o usuário alterou quaisquer valores)
  2. caixa de confirmação Display (javascript confirmar com valores "Você realmente quer para descartar as alterações - SIM NÃO") quando o usuário altera os valores de formulário
  3. Se o usuário diz que sim, em seguida, enviar o formulário usando AJAX (usando a4j)

Meu código botão de comando a4j é assim

<a4j:commandButton action="MyClass.cancel_action"
    onclick="checkIsPageChanged()"/>

A questão aqui é, ao usar usando a4j:commandButton, eu não posso chamar a função javascript intermediário (a função que verifica se o usuário atualiza qualquer caixa de confirmação valores e displays) e, em seguida, submeter o pedido usando ajax. Eu olhei o código gerado pelo JSF eo código é como (não exatamente, mas syntact)

<input type="button"
    onclick="checkIsPageChanged();AJAX.submit('')/>

A coisa é quando eu clico no botão, ele está chamando única checkIsPageChanged() e não chamando AJAX.submit().

Qualquer solução para este vai me ajudar.

Agradecemos antecipadamente.

Foi útil?

Solução 2

Para ser mais específico, podemos usar:

onclick="if(!isPageChanged()) {return false}" 

Voltando falsa não vai submeter o pedido.

Outras dicas

Use a4j:jsFunction e chamada que do seu a4j:commandButton quando os checkIsPageChanged() retorna verdadeiro.

por exemplo.

<a4j:commandButton action="MyClass.cancel_action"
    onclick="if(checkIsPageChanged()) { cancel(); }"/>
<a4j:jsFunction name="cancel" action="MyClass.cancel_action"/>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top