Pessoal, no evento onSubmit de um formulário HTML, chamo uma função Javascript responsável por verificar se os campos estão preenchidos corretamente.
Caso não estiverem, ele mostra um alerta na tela e a minha intenção é cancelar o envio do form.
Porém, não estou conseguindo cancelar esse evento. Andei procurando um pouco e vi algo como event.returnValue = false, porém sem sucesso.
Saberiam me dizer como posso fazer para cacnelar o submit de um formulário?
O que está ocorrendo: Ele exibe os alertas de erro do js, porém o formulário é enviado da mesma forma. AO invés de e.preventDefault tentei também com event.preventDefault mas também não tive sucesso…
Ali no validarCampos no caso seria o valForm, correto?
Eu tentei com o return false ao final, porém o formulário ainda é submetido.
Eu faço os testes no js e também no servidor. Porém, estou tentando não enviar para o servidor em caso de erro para poupar processamento no servidor.
P
perdeu
vc tem q colocar return false quando campo o não for validado.
functionvalForm(){erro=""; nErros=0; if(!verificaRadios()){erro+="Selecione um sentido para a transferência."; nErros++; }if(document.frm.cmbTabelas.value==0){erro+="Selecione uma tabela para a tranferência."; nErros++; }if(nErros>0){window.alert(erro); returnfalse;}}
J
jks1903
perdeu:
vc tem q colocar return false quando campo o não for validado.
functionvalForm(){erro=""; nErros=0; if(!verificaRadios()){erro+="Selecione um sentido para a transferência."; nErros++; }if(document.frm.cmbTabelas.value==0){erro+="Selecione uma tabela para a tranferência."; nErros++; }if(nErros>0){window.alert(erro); returnfalse;}}
Fiz isso, mas ainda não consegui. A função js ficou assim:
ele não submete o formulário mesmo quando é para enviar.
Já se eu retirar o "return false" do formulário, no evento onSubmit, ele permanece enviando o form com as informações incorretas.
MAs obrigado por estar me dando uma força.
P
perdeu
veja se n é problema com cache, vou fazer um exemplo simples ja posto ai.
P
perdeu
testei aqui deu certo.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><scripttype="text/javascript">functionvalidarCampos(frm){varerros=0;varmgs="";if(frm.nome.value==''){msg="Informe o nome.\n;"erros++;}if(frm.idade.value==''){mgs+='Informe a idade.\n';erros++;}if(frm.cidade.value==''){mgs+='Informe a cidaade.\n';erros++;}if(frm.endereco.value==''){mgs+='Informe o endereco.\n';erros++;}if(erros>0){alert(mgs);returnfalse;}}</script></head><body><formaction="action.php"method="post"onsubmit="validarCampos(this); return false;">
nome: <inputtype="text"id="nome"name="nome"/><br>
idade: <inputtype="text"id="idade"name="idade"/><br>
cidade: <inputtype="text"id="cidade"name="cidade"/><br>
endereco: <inputtype="text"id="endereco"name="endereco"/><br><inputtype="submit"value="Enviar"/></form></body></html>
J
jks1903
perdeu:
testei aqui deu certo.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><scripttype="text/javascript">functionvalidarCampos(frm){varerros=0;varmgs="";if(frm.nome.value==''){msg="Informe o nome.\n;"erros++;}if(frm.idade.value==''){mgs+='Informe a idade.\n';erros++;}if(frm.cidade.value==''){mgs+='Informe a cidaade.\n';erros++;}if(frm.endereco.value==''){mgs+='Informe o endereco.\n';erros++;}if(erros>0){alert(mgs);returnfalse;}}</script></head><body><formaction="action.php"method="post"onsubmit="validarCampos(this); return false;">
nome: <inputtype="text"id="nome"name="nome"/><br>
idade: <inputtype="text"id="idade"name="idade"/><br>
cidade: <inputtype="text"id="cidade"name="cidade"/><br>
endereco: <inputtype="text"id="endereco"name="endereco"/><br><inputtype="submit"value="Enviar"/></form></body></html>
cara, testei esse teu código aqui e não funcionou como esperado, rsrs.
Nesse caso ele não está enviando de nenhuma forma.
Por exemplo, tenta preencher todos os campos com alguma informação e veja se o formulário é enviado, porque aqui ele não enivou.