Ir para conteúdo

POWERED BY:

Arquivado

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

Vinicius Cainelli

Validação de check box

Recommended Posts

Galera, seguinte:

Alguém sabe me dizer, o porque esse script não funciona com os 2 ifs juntos.

 

Assim, tenho 2 grupos de checkbox pra validar, um de email, e um de logos.. usando esse script aqui:

 

// EMAILS
if (jQuery("input[@name='email[]']:checked").length <= 0) {
alert("Selecione os emails de quem irá receber o pedido!");
   return false;
}

// Logos
if (jQuery("input[@name='pdLogos[]']:checked").length <= 0) {
alert("Selecione os logos.");
   return false;
} 

 

SSe eu coloco os 2 juntos, apenas um deles funciona, o primeiro no caso.. mas o outro não funciona.. já testei os 2 sózinhos, e eles funcionam.. só juntos que não roda.

 

Como posso resolver isso??

 

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que resolve se no segundo if, você colocar "else if".

Aliás não, deixa queto. :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

o return false; trunca a continuação do script amigo..

 

se cair no primeiro if(), o return joga a execução para fora.

 

tão simples qnto isso. Programação Básica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, entendi.. mas então pq esse aqui funciona mesmo com esse bloco inserido..

 

Tem mais uns 10 blocos desse no script inteiro... de acordo com o que você falou, ele deveria parar de funcionar, correto?

 

// AREA
var x=document.forms["formped"]["pdArea"].value;
if (x==null || x=="" || x=="-")
 {
 alert("Selecione a área");
 document.formped.pdArea.focus();
 return false;
 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

não é parar de funcionar.

 

mas jogar a execução do script para fora.

 

dessa forma, você nunca verá 2 alerts() entendeu ?

vai ver um, o return joga pra fora.

 

vai ver outro alert(), o return joga para fora..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, desculpa. Mas ainda não entendi, tá assim

 

 

if (condição){ mensagem se for de acordo com a condição; return false; }

 

Se eu tiro o return deles, roda o script todo sem parar, ai aparace um monte de alerts na tela, se eu coloco true ele finaliza o formulario sem checar os outros itens..

 

Ainda nao entendi o pq ele joga pra fora, sendo que todos os outros blocos são parecidos...=/

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta.. vamos com calma então.

 

 

Ctrl+Shif+J no firefox, e verifique se tem erros no código.

http://wbruno.com.br/blog/2011/03/31/como-debugar-javascript-firefox-erros-comuns/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo... Vamos lá...

Você sabe o que significa a keyword 'return'?

 

No Javascript, assim como em váaarias outras linguagens, existen Procedimentos e Funções.

Na prática, são a mesma coisa, com a exceção de que um procedimento não tem retorno, ao contrário de uma função, que possui um retorno.

 

A keyword 'return' é usada em funções para RETORNAR UM CERTO VALOR.

Entretanto, ela só deve ser chamada quando a função TERMINA, pois, como o próprio nome diz, a execução irá retornar ao local em que ela foi chamada, o que pode ser uma outra função, ou não.

Em outras palavras, NADA QUE VIER DEPOIS DE UMA KEYWORD 'RETURN' IRÁ SER EXECUTADO.

 

Então como fazer?

Ao invés de usar 'return' em todas as condições, defina uma variável que armazene o valor do retorno, por exemplo:

var retorno = true;

 

Então faça assim:

if (jQuery("input[@name='email[]']:checked").length <= 0) {
       alert("Selecione os emails de quem irá receber o pedido!");
   retorno false;
       }

 

E lá no final dessa função coloque:

return retorno;

 

Dessa forma, todos os seus alertas serão mostrados, o que é um tanto irritante para o usuário, mas não vem ao caso...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então brother, eu sei o q o return faz isso tudo, o que eu não entendo, é que no meu scrip de validação, tem mais de 10 blocos com renturn false; no final, e nada disso acontece, ele só tá dando esse pau com os cheks.. ele tá misturando, e os 2 estão com name diferente..

 

Sem esses blocos do chek ele roda direitinho, só que com os 2 ele não roda, ele sempre deixa um dos 2 cheks passar batido...

 

Aqui meu script completo: (sem esse bloco dos checks)

 


function validateForm()
{

var retorno = true;


// PRAZO CONCEITO
var x=document.forms["formped"]["pdPrazoConceito"].value;
if (x==null || x=="")
 {
 alert("Preencha o prazo do conceito");
 document.formped.pdPrazoConceito.focus();
 return false;
 }

// PRAZO PLANO
var x=document.forms["formped"]["pdPrazoPlano"].value;
if (x==null || x=="")
 {
 alert("Preencha o prazo do plano");
 document.formped.pdPrazoPlano.focus();
 return false;
 }

// CAMPANHA
var x=document.forms["formped"]["pdCampanha"].value;
if (x==null || x=="")
 {
 alert("Preencha o nome da campanha");
 document.formped.pdCampanha.focus();
 return false;
 }

// VERBA CAMPANHA
var x=document.forms["formped"]["vbCamp"].value;
if (x==null || x=="")
 {
 alert("Preencha a verba da campanha");
 document.formped.vbCamp.focus();
 return false;
 }

// VERBA GOOGLE
var x=document.forms["formped"]["vbGoo"].value;
if (x==null || x=="")
 {
 alert("Preencha a verba da rede display");
 document.formped.vbGoo.focus();
 return false;
 }

// INICIO CAMPANHA
var x=document.forms["formped"]["pdStart"].value;
if (x==null || x=="")
 {
 alert("Preencha o início da campanha");
 document.formped.pdStart.focus();
 return false;
 }

// TERMINO CAMPANHA
var x=document.forms["formped"]["pdFinish"].value;
if (x==null || x=="")
 {
 alert("Preencha o término da campanha");
 document.formped.pdFinish.focus();
 return false;
 }

// ATENDIMENTO
var x=document.forms["formped"]["pdAtendimento"].value;
if (x==null || x=="" || x=="-")
 {
 alert("Selecione o atendimento");
 document.formped.pdAtendimento.focus();
 return false;
 }

// AREA
var x=document.forms["formped"]["pdArea"].value;
if (x==null || x=="" || x=="-")
 {
 alert("Selecione a área");
 document.formped.pdArea.focus();
 return false;
 }


// 01 - Produdo / Serviço:
var x=document.forms["formped"]["pdTxt01"].value;
if (x==null || x=="")
 {
 alert("Preencha: Produdo / Serviço");
 document.formped.pdTxt01.focus();
 return false;
 }

// Descrição geral do produto
var x=document.forms["formped"]["pdTxt02"].value;
if (x==null || x=="")
 {
 alert("Preencha: Descrição geral do produto");
 document.formped.pdTxt02.focus();
 return false;
 }

// Objetivo da comunicação e benefícios a serem destacados
var x=document.forms["formped"]["pdTxt03"].value;
if (x==null || x=="")
 {
 alert("Preencha: Objetivo da comunicação e benefícios a serem destacados");
 document.formped.pdTxt03.focus();
 return false;
 }

// Público-alvo (target):
var x=document.forms["formped"]["pdTxt04"].value;
if (x==null || x=="")
 {
 alert("Preencha: Público-alvo");
 document.formped.pdTxt04.focus();
 return false;
 }

// 05 - Peças a serem criadas / desenvolvidas (explique o foco de cada peça):
var x=document.forms["formped"]["pdTxt06"].value;
if (x==null || x=="")
 {
 alert("Preencha: Peças a serem criadas");
 document.formped.pdTxt06.focus();
 return false;
 }

// Obrigatoriedades - Texto
var x=document.forms["formped"]["pdTxt07"].value;
if (x==null || x=="")
 {
 alert("Preencha: Obrigatoriedades - Texto");
 document.formped.pdTxt07.focus();
 return false;
 }

// Obrigatoriedades - Layout
var x=document.forms["formped"]["pdTxt08"].value;
if (x==null || x=="")
 {
 alert("Preencha: Obrigatoriedades - Layout");
 document.formped.pdTxt08.focus();
 return false;
 }


// Informações adicionais
var x=document.forms["formped"]["pdTxt05"].value;
if (x==null || x=="")
 {
 alert("Preencha: Informações adicionais");
 document.formped.pdTxt05.focus();
 return false;
 }


}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.