Ir ao conteúdo
  • Cadastre-se

Como usar duas funções com return false dentro do OnSubmit


snmelo

Posts recomendados

Eu coloquei duas funçoes no OnSubmit depois li em algum lugar que não pode ter duas funções com return false dentro do OnSubmit

function valida()
{

if((document.form1.nome.value.length < "3")||(document.form1.nome.value.length>"20"))

{document.getElementById("nome").innerHTML="Nome tem que ter entre 3 e 20 caracteres!";

return false; }return true;



if(isNaN(document.form1.nome.value)==false){document.getElementById("nome").innerHTML="Ultilize somente letras!";

return false;}return true


}



function valida2()

{
if((document.form1.sobrenome.value.length < "3")||(document.form1.sobrenome.length > "20"))

{document.getElementById("sobrenome").innerHTML="Sobrenome tem que ter entre 3 e 20 caracteres!;";
return false;
} return true;


}

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Exato amigo, após um return (independente de ser false ou true) a execução é interrompida.

Mas de qualquer forma você não precisa de 2 funções para validar campos diferentes.. em outras palavras, você não precisa de 1 função para cada campo que quiser validar..

Basta fazer o seguinte:

function validar(){
if(validacao1) == false
return false;

if(validacao2) == false
return false;

if(validacao3) == false
return false;

return true;
}

Em outras palavras, você só precisa de 1 return true.. você faz todas as verificações uma atrás da outra.. se encontrar algum erro você dá return false.. se não encontrar nenhum erro ele irá executar o "return true" e tudo seguirá o fluxo normal..

Lembre-se que nem todo IF precisa de ELSE, ok?

Abraços!

Link para o comentário
Compartilhar em outros sites

Exato amigo, após um return (independente de ser false ou true) a execução é interrompida.

Mas de qualquer forma você não precisa de 2 funções para validar campos diferentes.. em outras palavras, você não precisa de 1 função para cada campo que quiser validar..

Basta fazer o seguinte:

function validar(){
if(validacao1) == false
return false;

if(validacao2) == false
return false;

if(validacao3) == false
return false;

return true;
}

Em outras palavras, você só precisa de 1 return true.. você faz todas as verificações uma atrás da outra.. se encontrar algum erro você dá return false.. se não encontrar nenhum erro ele irá executar o "return true" e tudo seguirá o fluxo normal..

Lembre-se que nem todo IF precisa de ELSE, ok?

Abraços!

Cara eu já tinha tentado fazer assim mas ele só executa o segundo if se a primeira condição for falsa, por que isso? tem como resolver

a função ai:

function valida()
{

if((document.form1.nome.value.length < "3")||(document.form1.nome.value.length>"20")){

document.getElementById("nome").innerHTML="Nome tem que ter entre 3 e 20 caracteres!";

return false; }



if(isNaN(document.form1.nome.value)==false){


document.getElementById("nome").innerHTML="Ultilize somente letras!";
return false;}





if((document.form1.sobrenome.value.length <"3")||(document.form1.sobrenome.value.length >"20"))

{document.getElementById("sobrenome").innerHTML="Sobrenome tem que ter entre 3 e 20 caracteres!";
return false;}



return true;










}

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Pelo mesmo motivo amigo.. se a condição for verdadeira o código vai executar o return false, e, consequentemente, interromper a execução.

if((document.form1.nome.value.length < "3")||(document.form1.nome.value.length>"20")){

document.getElementById("nome").innerHTML="Nome tem que ter entre 3 e 20 caracteres!";

[COLOR="Red"][B] return false; [/B][/COLOR]}

Portanto, o código só executará a segunda verificação (if), se NÃO passar pelo return false (ou seja, a verificação acima é falsa).

Sendo assim, se você utilizar return false ("deu erro") a cada verificação, seu sistema fará a validação dos formulários um por um.. e se nenhum der erro ele dá OK.

Para fazer a verificação de todos "ao mesmo tempo" e depois retornar uma mensagem contendo todos, você precisa fazer algo mais ou menos assim:

function valida(){
[COLOR="Blue"][B]var erros = false;[/B][/COLOR]
if(document.form1.nome.value.length [COLOR="Red"][B]< 3 [/B][/COLOR]|| document.form1.nome.value.length[COLOR="Red"][B] > 20[/B][/COLOR]){
document.getElementById("nome").innerHTML[COLOR="Red"][B]+=[/B][/COLOR]"Nome tem que ter entre 3 e 20 caracteres!";
[COLOR="Blue"][B]erros = true;[/B][/COLOR]
}

if(isNaN(document.form1.nome.value)==false){
document.getElementById("nome").innerHTML="Ultilize somente letras!";
[COLOR="Blue"][B]erros = true;[/B][/COLOR]
}

if(document.form1.sobrenome.value.length[COLOR="Red"] [B]< 3[/B] [/COLOR]|| document.form1.sobrenome.value.length[COLOR="Red"][B] > 20[/B][/COLOR]){
document.getElementById("sobrenome").innerHTML[COLOR="Red"][B]+=[/B][/COLOR]"Sobrenome tem que ter entre 3 e 20 caracteres!";
[COLOR="Blue"][B]erros = true;[/B][/COLOR]
}
if([COLOR="Blue"][B]erros[/B][/COLOR]){
return false;
} else {
return true;
}
}

Primeiro criamos uma variavel booleana para identificar se alguma das verificações deu erro. Executamos TODAS as verificações. Se alguma delas está errada, o valor da variavel será true, portanto, retornamos falso. Senão, o valor dela vai ser falso, e retornamos true. (acho que deu pra entender né hehehe)

Outra coisa.. a função .length() retorna um INTEIRO contendo o número de caracteres de uma string.. portanto, você deve fazer a verificação sem as aspas (mudanças em vermelho acima). Também, não vi motivos para separar as verificações entre parenteses e removi-los.

Espero que tenha entendido.

PS: Sugiro que estude sobre indentação e camelcase

Abraços!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...