Olá, alguem poderia me dizer como fazer o meu commandButton nao fazer submit, pois vejo q todo botão no jsf ele faz um submit no form, mesmo que ele nao seja do tipo submit…eu queria validar meu formulario(java script) antes de enviar mas estou com dificuldade nisso…alguem pode me ajudar?
<h:commandButton value="Emitir..." action="#{index.submit}" tabindex="19" />
O metodo submit é sempre chamado, eu queria validar o form só depois chamar o metodo submit.
att,
Quinho.
Bom… nao sei se eh isso que vc quer… mas eh bem simples
Os eventos de javascript sempre sao executados antes do submit do botao…
Assim é só chamar uma função no evento que quiser…
exemplo:
<h:commandButton value="Emitir..." action="#{index.submit}" tabindex="19" onclick="javascript: return validar();" />
onde validar é a sua função javascript…
e caso retorne false não sera executado o submit
Tente ai!!!
Cara show de bola, valeu mesmo você quebrou um super galho pra me…agora me diz uma coisa, se vários campos obrigatorios estiverem em branco eu gostaria de mostrar só uma mensagem…tipo assim, se tivesse pelo menos um não seria obrigatorio olhar o restante…
att, Quinho
E ai…
Bom… esse seu problema ai eh mais facil ainda…
Todo componente tem um id… certo?! E a forma mais facil que eu vejo pra fazer isso, eh por exemplo, pegando o id de cada um, e verificando o conteudo…
Para isso vc terá que dar os nomes aos seus componentes, pois caso contrario eles serao gerados automaticamente… o que eh uma chatisse… rss… mas funciona…
Faça assim:
...
/* Na Jsp coloque ids ordenados nos seus componentes
Vou dar o exemplo de tres campos inputText onde
apenas dois sao obrigatorios e um botao submit que
antes de tudo executa a funcao javascript de verificacao dos
campos chamada no onclick do botao */
<h:commandButton action=#{seuBean.suaAcao} onClick="javascript: return verificaCamposObrigatorios(this);"/>
<h:inputText id="inpo1" value="#{seuBean.valor1}" title="#{bundle['nomeCampo1']}"/>
<h:inputText id="inp2" value="#{seuBean.valor2}" title="#{bundle['nomeCampo2']}"/>
<h:inputText id="inpo3" value="#{seuBean.valor3}" title="#{bundle['nomeCampo3']}"/>
/* Onde inpo1 é input obrigatorio (1)
inp2 é input nao obrigatorio (2)
inpo3 é input obrigatorio (3) */
...
/* Bom... sua jsp esta pronta certo?! Agora falta criar a funcao
verifica campos obrigatorios em javascript */
function verificaCamposObrigatorios(campo) {
boo = true;
cont = 1;
while( boo ) {
id = campo.form + ":inpo" + cont;
cmp = "";
if ( document.getElementById( id ) )
cmp = document.getElementById( id );
if ( cmp != "" ) {
if ( cmp.value == "" ) {
alert( "Preencha corretamente o campo: " + cmp.title );
return false; // Nao deixa o componente dar submit
}
} else {
id = campo.form + ":inp" + cont;
if ( document.getElementById( id ) )
boo = true;
else
boo = false;
}
cont++;
}
return true;
}
Bom… eu nao testei esse código ai nao… mas tente entender e testa-lo…
Provavelmente com alguns acertos ele funcionara… lembrando que eu estou olhando id por id e verificando o conteudo de cada um…
No alert eu estou mostrando o title do componente… que deve ser o nome do campo…
Caso nao funcione ou nao entende… poste aqui q tentarei ajuda-lo…
Inté…