Validação CFFORM e submit via onClick, bug ou o que?
Publicado; 21/02/2005 Arquivado em: ColdFusion 11 ComentáriosSemana passada estava desenvolvendo um website quando surgiu a necessidade de se submeter um formulário (criado com CFFORM) com um link de texto, ao invés de uma imagem ou tradicional botão de submit. Pensei: nada mais simples. Basta chamar a função submit(); invocando JavaScript direto na tag <a> (<a href=”JavaScript:submit();”>) ou usando o método OnClick (<a href=”#” OnClick=”submit();”>).
Mas acontecia um problema estranho: ao se clicar no link para submeter o formulário, toda em qualquer validação necessária para este formulário (justamente o que mais nos interessa na tag CFFORM) era ignorada e o formulário submetido assim mesmo. Campos obrigatórios que eram, por exemplo, deixados em branco, eram submetidos assim mesmo, ignorando a validação gerada pelo CFFORM (atributo required=”yes”).
Confira o problema aqui. Googlei a respeito mas não encontrei nada, apenas alguns relatos de problemas parecidos, porém sem solução. Para resolver o meu problema imediato, acabei encontrando uma forma de contorno (workaround) relativamente simpls, vulgo gambiarra, que funciona bem e que consiste na criação de uma nova função, exclusiva para (1) forçar as verificações pendentes (onSubmit) e (2) submeter o formulário na seqüência, assim (supondo que o seu formulário seja nomeado como “formulario”):
<script language="JavaScript">
function submitform() {
if (_CF_checkformulario(formulario))
formulario.submit();
}
</script>
O workaround pode ser visto em funcionamento também aqui. Na seqüência postei o meu problema na CF-Brasil e tive a ajuda do Fernando Barros que me disse acertadamente não se tratar de um bug do CFFORM, mas sim de algum outro elemento, muito provavelmente o browser, que não estava seguindo uma recomendação do W3, com base nesta informação. É difícil dizer se o problema é simplesmente este, uma vez que a recomendação é bastante clara: o evento submit deve submeter o formulário (o que efetivamente acontece), mas não fala nada sobre eventuais handlers pendentes e existentes para este mesmo formulário. IE, Mozilla/Firefox e Opera apresentam o mesmo problema. Como JavaScript não é necessariamente uma área cujas recomendações do W3 valham, procurei na Nestcape (mãe do JavaScript) qualquer informação a respeito e de novo acertei a água, nada.
Até agora não encontrei nenhuma explicação definitiva e conclusiva. Por isso pergunto: alguém aí sabe de alguma coisa? Poderia nos dar uma luz?
Ah um tempo atras tive o mesmo problema mas nem utilizava ColdFusion ainda. http://developer.irt.org/script/1342.htm. Não é bug. Somente a forma que ele trata os eventos.
aaaaa
qq
Ola Colega,
estou com o mesmo problema que você, o problema realmente esta no metodo onclick, por algum motivo no firefox ele nao aceita, no IE funciona normal…
Vou dar mais uma pesquisada por ai e ver o que encontro…
Abraços..
Marcio Pinheiro
http://www.marpinheiro.com.br
É pessoal sou mais a me deparar com tal evento bizarro! O problema acredito ser realmente do FireFox. Estou numa verdadeira sinuca pois o meu publico alvo trabalham com plataforma linux e utilizam o FireFox.
Se alguem conseguir algo serei muito grato!
ja tentou reescrever a funcao usando o getElementById?
deve funciona
alias quem quiser meu msn georgeand666@hotmail.com
gosto de desafios
Opa. Acredito pela data da postagem que você já resolveu o problema, mas o que pode ser feito para isso é chamar uma função que faça a consistência do formulário e caso esteja ok:
“document.form.submit();”
Resolvi da seguinte forma:
ab.
A resposta é o seguinte:
[a href=”javascript: document.getElementById(‘formulario’).submit();”] [/a]
By.
ola