JSF X JS - document.getElement('form:botaoCadastrar').onclick = function() cancela a funcao do botao

6 respostas
K

ola pessoal
eu tenho a seguinte pagina

....
<a4j:commandButton id="botaoCadastrar" value="Cadatrar" action="#{pessoaFisicaMB.acaoCadastrar}">	</a4j:commandButton>
....
<script language="javascript">
document.getElementById('form:botaoCadastrar').onclick = function(){
	alert('botao');
}
</script>

desta forma, o meu formulario nao funciona, ele nao chama o action, porem, se eu o fazer desta forma funciona

<a4j:commandButton id="botaoCadastrar" onclick="alert('botao');" value="Cadatrar" action="#{pessoaFisicaMB.acaoCadastrar}">	</a4j:commandButton>

pergunta que tenho ate medo de fazer

Tem como eu fazer da primeira forma?
por que ele nao aceita?

abs
T+

6 Respostas

under_fire

Eu numca tive problema com isso.

Se vc utilizar uma biblioteca como prototype vc pode fazer assim:

Event.observe($(id_do_element), click, function(e){

var el = e.target ? e.target : e.srcElement;

alert(el.id)

})

Eu acharia mais facil vc fazer assim:
<a4j:commandButton id=“botaoCadastrar” onclick=“alert(‘botao’)” value=“Cadatrar” action="#{pessoaFisicaMB.acaoCadastrar}"> </a4j:commandButton>

As vezes para não me gerar centenas de linhas a mais no seu projeto, é mais viavel usar dessa forma…
que escrever um listener para cada elemento :wink:

Mas fica a dica ai p/ usar o prototype :wink:

Uma coisa é interessante tbm se vc usa o myfaces utilize o dojo :wink:
Abraço

K

prototype, vai aumentar muito o tamanho do projeto, to tentando nao utilizar dele.

como sempre utilizei desta forma e nao tive problemas, mas, agora que to usando jsf estou tendo muito problemas com o JS.

a parte do “myfaces utilize o dojo”, como poderia me ajudar?
nunca utilizei deste

abs

obrigado

rponte

Neste caso você está substituindo o evento “onclick” do botão, logo ele não executará o evento default do próprio componente. O que você poderia fazer é fazer um append no inicio ou final do componente, mas não substituir o evento como você fez.

e-cowboy

Cara você pode substituir o onclick do jeito que você quer!

<script type="javascript">
document.getElementById('form:botaoCadastrar').onclick = function onclick(event){ alert('botao'); };
</script>
K

e como seria fazer esse “append”?
é que eu nem sei oq é isso direito

abs
T+

K
e-cowboy:
Cara você pode substituir o onclick do jeito que você quer!
<script type="javascript">
document.getElementById('form:botaoCadastrar').onclick = function onclick(event){ alert('botao'); };
</script>

desta forma, ocorre o mesmo problema

abs

T+

Criado 20 de maio de 2008
Ultima resposta 20 de mai. de 2008
Respostas 6
Participantes 4