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

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+

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

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

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.

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>

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

abs
T+

[quote=e-cowboy]Cara você pode substituir o onclick do jeito que você quer!

[code]

[/code][/quote]

desta forma, ocorre o mesmo problema

abs

T+