Jump to content


Photo

Validar Campo Data Somente Se O Campo Foi Preenchido


  • Faça o login para participar
18 replies to this topic

#1 acdestefani

acdestefani

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino

Posted 27/11/2009, 09:49

Olá Pessoal!
Consegui um scrip na internet pra validar e colocar máscara no campo data de nascimento de um formulário. Ele está funcionando perfeitamente, mas como o campo não é de preenchimento obrigatório gostaria que a validação somente fosse feita se o campo fosse preenchido, ou seja, se o campo estiver em branco a validação não será feita.
É possível fazer isso?

Outra coisa, além do campo data de nascimento tenho também outro campo data. A validação é feita ao clicar no botão "salvar" <input name="salvar" value="Salvar" type="submit" onClick="return validaData(cadastrodecandidatos.datanascimento);">(). Têm como validar os doi campos com o mesmo script?

Segue abaixo o script:

function validaData(str) { 

	dia = (str.value.substring(0,2)); 
   mes = (str.value.substring(3,5)); 
 	ano = (str.value.substring(6,10)); 

	cons = true; 
	
	// verifica se foram digitados números
	if (isNaN(dia) || isNaN(mes) || isNaN(ano)){
		alert("Preencha a data somente com números."); 
		str.value = "";
		str.focus(); 
		return false;
	}
		
    // verifica o dia valido para cada mes 
    if ((dia < 01)||(dia < 01 || dia > 30) && 
		(mes == 04 || mes == 06 || 
		 mes == 09 || mes == 11 ) || 
		 dia > 31) { 
    	cons = false; 
	} 

	// verifica se o mes e valido 
	if (mes < 01 || mes > 12 ) { 
		cons = false; 
	} 

	// verifica se e ano bissexto 
	if (mes == 2 && ( dia < 01 || dia > 29 || 
	   ( dia > 28 && 
	   (parseInt(ano / 4) != ano / 4)))) { 
		cons = false; 
	} 
    
	if (cons == false) { 
		alert("A data inserida não é válida: " + str.value); 
		str.value = "";
		str.focus(); 
		return false;
	} 
}

// colocar no evento onKeyUp passando o objeto como parametro
function formata(val)
{
   	var pass = val.value;
	var expr = /[0123456789]/;
		
	for(i=0; i<pass.length; i++){
		// charAt -> retorna o caractere posicionado no índice especificado
		var lchar = val.value.charAt(i);
		var nchar = val.value.charAt(i+1);
	
		if(i==0){
		   // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
		   // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
		   // instStr.search(expReg);
		   if ((lchar.search(expr) != 0) || (lchar>3)){
			  val.value = "";
		   }
		   
		}else if(i==1){
			   
			   if(lchar.search(expr) != 0){
				  // substring(indice1,indice2)
				  // indice1, indice2 -> será usado para delimitar a string
				  var tst1 = val.value.substring(0,(i));
				  val.value = tst1;				
 				  continue;			
			   }
			   
			   if ((nchar != '/') && (nchar != '')){
				 	var tst1 = val.value.substring(0, (i)+1);
				
					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
			   }

		 }else if(i==4){
			
				if(lchar.search(expr) != 0){
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;
					continue;			
				}
		
				if	((nchar != '/') && (nchar != '')){
					var tst1 = val.value.substring(0, (i)+1);

					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
				}
   		  }
		
		  if(i>=6){
			  if(lchar.search(expr) != 0) {
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;			
			  }
		  }
	 }
	
     if(pass.length>10)
		val.value = val.value.substring(0, 10);
	 	return true;
}
</script>


Desde já agradeço a ajuda de todos.

#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 27/11/2009, 10:27

Tente colocar este trecho logo no início da função validaData:

if (str.length == 0) {
	return true;
}

Com isso ele primeiro verifica se o tamanho do campo é zero, e se for o caso o retorno é positivo.

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 acdestefani

acdestefani

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino

Posted 27/11/2009, 10:42

Obrigado pela ajuda Paulo!

Ficaria assim?

<script>

function validaData(str) { 
if (str.length = 0) {
        return true;
}
	dia = (str.value.substring(0,2)); 
   mes = (str.value.substring(3,5)); 
 	ano = (str.value.substring(6,10)); 

	cons = true; 

...


Infelizmente não deu certo. Se tiver mais alguma sugestão, posta aí por favor.

Obrigado!

#4 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 27/11/2009, 10:55

Opa, agora que notei como você faz a validação.

Na verdade o que eu sugeri ficaria assim então:

if (str.value.length == 0) {
	return true;
}

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#5 acdestefani

acdestefani

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino

Posted 30/11/2009, 08:41

Muito obrigado Paulo! Funcionou direitinho.
Mais uma coisa. Tem como incluir nesse script uma verificação de quando o campo for preenchido, ele deverá ser preenchido com 8 dígitos, caso contrário ele exibi a mensagem de erro? É que se digito a data dessa maneira 10/03/7, por exemplo, e ele tá aceitando e gravando de maneira errada no banco.

Outra dúvida: Além do campo datanascimento, tenho mais dois campos data nesse formulário (datanascimentoconj e datainscricao) e faço a verificação no botão enviar:

<input name="salvar" value="Salvar" type="submit" onClick="return validaData(cadastrodecandidatos.datanascimento);">

É possível fazer a verificação dos três campos?

Infelizmente não entendo nada de javascript e se puder me ajuda, por favor.

Obrigado!

#6 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 30/11/2009, 10:11

Para a primeira dúvida altere a condição que te passei para:

if (str.value.length == 0) {
	return true;
} else {
	if (str.value.length != 8) {
		return false;
	}
}

Para validar os três campos, você pode mudar esta validação retirando-a do botão:

<input name="salvar" value="Salvar" type="submit" />

E colocando na ação do formulário:

<form action="..." method="..." onsubmit="return validaFormulario();">

E essa função validaFormulario teria todas as validações para que o formulário seja enviado.

function validaFormulario() {
	if (!validaData(cadastrodecandidatos.datanascimento)) {
		return false;
	}
	
	if (!validaData(cadastrodecandidatos.datacarteira)) {
		return false;
	}

	if (!validaData(cadastrodecandidatos.datavalidade)) {
		return false;
	}
}

Coloquei mais duas validações como exemplo.

[]'s (ok2)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#7 acdestefani

acdestefani

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino

Posted 01/12/2009, 09:35

Paulo,

Meu código ficaria assim:

function validaFormulario() {
        if (!validaData(cadastrodecandidatos.datanascimento)) {
                return false;
        }
        
        if (!validaData(cadastrodecandidatos.datanascimentoconj)) {
                return false;
        }

        if (!validaData(cadastrodecandidatos.datainscricao)) {
                return false;
        }

if (str.value.length == 0) {
        return true;
} else {
        if (str.value.length != 8) {
                return false;
        }
}


	dia = (str.value.substring(0,2)); 
   	mes = (str.value.substring(3,5)); 
 	ano = (str.value.substring(6,10)); 

	cons = true; 
	
	// verifica se foram digitados números
	if (isNaN(dia) || isNaN(mes) || isNaN(ano)){
		alert("Preencha a data somente com números."); 
		str.value = "";
		str.focus(); 
		return false;
	}
		
    // verifica o dia valido para cada mes 
    if ((dia < 01)||(dia < 01 || dia > 30) && 
		(mes == 04 || mes == 06 || 
		 mes == 09 || mes == 11 ) || 
		 dia > 31) { 
    	cons = false; 
	} 

	// verifica se o mes e valido 
	if (mes < 01 || mes > 12 ) { 
		cons = false; 
	} 

	// verifica se e ano bissexto 
	if (mes == 2 && ( dia < 01 || dia > 29 || 
	   ( dia > 28 && 
	   (parseInt(ano / 4) != ano / 4)))) { 
		cons = false; 
	} 
    
	if (cons == false) { 
		alert("A data inserida não é válida: " + str.value); 
		str.value = "";
		str.focus(); 
		return false;
	} 
}


// colocar no evento onKeyUp passando o objeto como parametro
function formata(val)
{
   	var pass = val.value;
	var expr = /[0123456789]/;
		
	for(i=0; i<pass.length; i++){
		// charAt -> retorna o caractere posicionado no índice especificado
		var lchar = val.value.charAt(i);
		var nchar = val.value.charAt(i+1);
	
		if(i==0){
		   // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
		   // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
		   // instStr.search(expReg);
		   if ((lchar.search(expr) != 0) || (lchar>3)){
			  val.value = "";
		   }
		   
		}else if(i==1){
			   
			   if(lchar.search(expr) != 0){
				  // substring(indice1,indice2)
				  // indice1, indice2 -> será usado para delimitar a string
				  var tst1 = val.value.substring(0,(i));
				  val.value = tst1;				
 				  continue;			
			   }
			   
			   if ((nchar != '/') && (nchar != '')){
				 	var tst1 = val.value.substring(0, (i)+1);
				
					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
			   }

		 }else if(i==4){
			
				if(lchar.search(expr) != 0){
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;
					continue;			
				}
		
				if	((nchar != '/') && (nchar != '')){
					var tst1 = val.value.substring(0, (i)+1);

					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
				}
   		  }
		
		  if(i>=6){
			  if(lchar.search(expr) != 0) {
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;			
			  }
		  }
	 }
	
     if(pass.length>10)
		val.value = val.value.substring(0, 10);
	 	return true;
}


É que agora a validação na está funcionando.

#8 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 01/12/2009, 09:41

Não não, você adicionaria mais uma função no início:

function validaFormulario() {
        if (!validaData(cadastrodecandidatos.datanascimento)) {
                return false;
        }
        
        if (!validaData(cadastrodecandidatos.datanascimentoconj)) {
                return false;
        }

        if (!validaData(cadastrodecandidatos.datainscricao)) {
                return false;
        }
}

Na função validaData, a que já existe, você trocaria a primeira condição que eu mesmo te passei para esta:

if (str.value.length == 0) {
        return true;
} else {
        if (str.value.length != 8) {
                return false;
        }
}

Remova a propriedade onclick do botão que salva o formulário e no cabeçalho do formulário, na tag <form> você adiciona a propriedade onsubmit:

onsubmit="return validaFormulario();"

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#9 acdestefani

acdestefani

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino

Posted 01/12/2009, 10:17

Obrigado pela ajuda Paulo! Infelizmente ainda não deu certo. Quando não preencho nenhum dos campos data e clico no botão salvar o registro é salvo corretamente e quando preencho algum deles e clico em salvar não acontece nada: No meu formulário coloquei assim:

<form method="post" action="sehapcadcandconf.php" name="cadastrodecandidatos" onsubmit="return validaFormulario();">

Meu script tá assim:

function validaFormulario() {
        if (!validaData(cadastrodecandidatos.datanascimento)) {
                return false;
        }
        
        if (!validaData(cadastrodecandidatos.datanascimentoconj)) {
                return false;
        }

        if (!validaData(cadastrodecandidatos.datainscricao)) {
                return false;
        }
}

function validaData(str) { 

if (str.value.length == 0) {
        return true;
} else {
        if (str.value.length != 8) {
                return false;
        }
}

	dia = (str.value.substring(0,2)); 
        mes = (str.value.substring(3,5)); 
 	ano = (str.value.substring(6,10)); 

	cons = true; 
	
	// verifica se foram digitados números
	if (isNaN(dia) || isNaN(mes) || isNaN(ano)){
		alert("Preencha a data somente com números."); 
		str.value = "";
		str.focus(); 
		return false;
	}
		
    // verifica o dia valido para cada mes 
    if ((dia < 01)||(dia < 01 || dia > 30) && 
		(mes == 04 || mes == 06 || 
		 mes == 09 || mes == 11 ) || 
		 dia > 31) { 
    	cons = false; 
	} 

	// verifica se o mes e valido 
	if (mes < 01 || mes > 12 ) { 
		cons = false; 
	} 

	// verifica se e ano bissexto 
	if (mes == 2 && ( dia < 01 || dia > 29 || 
	   ( dia > 28 && 
	   (parseInt(ano / 4) != ano / 4)))) { 
		cons = false; 
	} 
    
	if (cons == false) { 
		alert("A data inserida não é válida: " + str.value); 
		str.value = "";
		str.focus(); 
		return false;
	} 
}

// colocar no evento onKeyUp passando o objeto como parametro
function formata(val)
{
   	var pass = val.value;
	var expr = /[0123456789]/;
		
	for(i=0; i<pass.length; i++){
		// charAt -> retorna o caractere posicionado no índice especificado
		var lchar = val.value.charAt(i);
		var nchar = val.value.charAt(i+1);
	
		if(i==0){
		   // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
		   // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
		   // instStr.search(expReg);
		   if ((lchar.search(expr) != 0) || (lchar>3)){
			  val.value = "";
		   }
		   
		}else if(i==1){
			   
			   if(lchar.search(expr) != 0){
				  // substring(indice1,indice2)
				  // indice1, indice2 -> será usado para delimitar a string
				  var tst1 = val.value.substring(0,(i));
				  val.value = tst1;				
 				  continue;			
			   }
			   
			   if ((nchar != '/') && (nchar != '')){
				 	var tst1 = val.value.substring(0, (i)+1);
				
					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
			   }

		 }else if(i==4){
			
				if(lchar.search(expr) != 0){
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;
					continue;			
				}
		
				if	((nchar != '/') && (nchar != '')){
					var tst1 = val.value.substring(0, (i)+1);

					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
				}
   		  }
		
		  if(i>=6){
			  if(lchar.search(expr) != 0) {
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;			
			  }
		  }
	 }
	
     if(pass.length>10)
		val.value = val.value.substring(0, 10);
	 	return true;
}

Tô achando um pouco complicado fazer essa validação, principalmente por ser iniciante. Será que fica mais fácil trabalhar com data igual é feito no cadastro do fórum, onde existe uma caixa para selecionar o dia, outra para o mês e uma para o ano?

Mais uma vez muito obrigado pela ajuda.

#10 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 01/12/2009, 10:33

hummm... :ponder:

Tente obter o valor do campo desta forma, na função validaFormulvario:

function validaFormulario() {
        if (!validaData(document.forms.cadastrodecandidatos.datanascimento)) {
                return false;
        }
        
        if (!validaData(document.forms.cadastrodecandidatos.datanascimentoconj)) {
                return false;
        }

        if (!validaData(document.forms.cadastrodecandidatos.datainscricao)) {
                return false;
        }
}

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#11 acdestefani

acdestefani

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino

Posted 02/12/2009, 10:28

Infelizmente ainda não deu certo. Já testei no Firefox e no Internet Explorer e dá o mesmo problema. Se digito uma data inválida ele mostra a mensagem de erro e se não digito nada no campo data ele consegue gravar o registro. Isso é justamente o que eu queria e tá funcionando corretamente.
O problema acontece quando digito uma data válida e clico no botão salvar, aí não acontece nada, fica a mesma tela.

#12 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 02/12/2009, 12:01

Você pode anexar os arquivos correspondentes para eu poder dar uma analisada no arquivo na íntegra? (y) Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#13 acdestefani

acdestefani

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino

Posted 02/12/2009, 14:37

Segue anexo o arquivo sehapcadcand.php, que é referente ao cadastro de candidatos. Abaixo segue o conteúdo do arquivo ValidaData.js.

function validaFormulario() {
        if (!validaData(document.forms.cadastrodecandidatos.datanascimento)) {
                return false;
        }
        
        if (!validaData(document.forms.cadastrodecandidatos.datanascimentoconj)) {
                return false;
        }

        if (!validaData(document.forms.cadastrodecandidatos.datainscricao)) {
                return false;
        }
}

function validaData(str) { 

if (str.value.length == 0) {
        return true;
} 
	dia = (str.value.substring(0,2)); 
        mes = (str.value.substring(3,5)); 
 	ano = (str.value.substring(6,10)); 

	cons = true; 
	
	// verifica se foram digitados números
	if (isNaN(dia) || isNaN(mes) || isNaN(ano)){
		alert("Preencha a data somente com números."); 
		str.value = "";
		str.focus(); 
		return false;
	}
		
    // verifica o dia valido para cada mes 
    if ((dia < 01)||(dia < 01 || dia > 30) && 
		(mes == 04 || mes == 06 || 
		 mes == 09 || mes == 11 ) || 
		 dia > 31) { 
    	cons = false; 
	} 

	// verifica se o mes e valido 
	if (mes < 01 || mes > 12 ) { 
		cons = false; 
	} 

	// verifica se e ano bissexto 
	if (mes == 2 && ( dia < 01 || dia > 29 || 
	   ( dia > 28 && 
	   (parseInt(ano / 4) != ano / 4)))) { 
		cons = false; 
	} 
    
	if (cons == false) { 
		alert("A data inserida não é válida: " + str.value); 
		str.value = "";
		str.focus(); 
		return false;
	} 
}

// colocar no evento onKeyUp passando o objeto como parametro
function formata(val)
{
   	var pass = val.value;
	var expr = /[0123456789]/;
		
	for(i=0; i<pass.length; i++){
		// charAt -> retorna o caractere posicionado no índice especificado
		var lchar = val.value.charAt(i);
		var nchar = val.value.charAt(i+1);
	
		if(i==0){
		   // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
		   // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
		   // instStr.search(expReg);
		   if ((lchar.search(expr) != 0) || (lchar>3)){
			  val.value = "";
		   }
		   
		}else if(i==1){
			   
			   if(lchar.search(expr) != 0){
				  // substring(indice1,indice2)
				  // indice1, indice2 -> será usado para delimitar a string
				  var tst1 = val.value.substring(0,(i));
				  val.value = tst1;				
 				  continue;			
			   }
			   
			   if ((nchar != '/') && (nchar != '')){
				 	var tst1 = val.value.substring(0, (i)+1);
				
					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
			   }

		 }else if(i==4){
			
				if(lchar.search(expr) != 0){
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;
					continue;			
				}
		
				if	((nchar != '/') && (nchar != '')){
					var tst1 = val.value.substring(0, (i)+1);

					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
				}
   		  }
		
		  if(i>=6){
			  if(lchar.search(expr) != 0) {
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;			
			  }
		  }
	 }
	
     if(pass.length>10)
		val.value = val.value.substring(0, 10);
	 	return true;
}

Attached Files



#14 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 02/12/2009, 15:24

Fiz uma analisada mais profunda fiz umas alterações na função que valida a data, substitua no seu arquivo Javascript e veja se vai funcionar.

function validaData (str) {
	var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
	var msgErro = 'Formato inválido de data.';
	
	if (str.value.length == 0) {
		return true;
	}
	
	if (str.value.match(expReg)) {
		var dia = str.value.substring(0,2);
		var mes = str.value.substring(3,5);
		var ano = str.value.substring(6,10);
		
		if ((mes==4 || mes==6 || mes==9 || mes==11) && dia > 30) {
			alert("Dia incorreto! O mês especificado contém no máximo 30 dias.");
			str.focus();
			return false;
		} else {
		
			if (ano%4 != 0 && mes == 2 && dia > 28) {
				alert("Data incorreta! O mês especificado contém no máximo 28 dias.");
				str.focus();
				return false;
			} else {
			
				if (ano%4==0 && mes==2 && dia>29) {
					alert("Data incorreta! O mês especificado contém no máximo 29 dias.");
					str.focus();
					return false;
				} else {
					return true;
				}
			}
		}
	} else {
		alert(msgErro);
		str.focus();
		return false;
	}
}

Só alterar esta função. (y)

[]'s (ok2)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#15 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 02/12/2009, 16:32

Pra funcionar, a função validaData() tem que retornar true, para que o if, do validaFormulario(), funcione. Repare que na função validaData(), o único lugar que retorna true é o if que verifica a quantidade de caracteres no campo.
if (str.value.length == 0) { 
	        return true;
	}

Depois disso, o último if retorna false, caso a data seja inválida. Mas, e se a data for válida, o que a função retorna? Nada. Para resolver, é só colocar um return true; antes do fechamento da função validaData().
function validaData(str) { 

	if (str.value.length == 0) { 
	        return true;
	} 
	  
        /* ...continua código.... */

	        if (cons == false) { 
	                alert("A data inserida não é válida: " + str.value); 
	                str.value = "";
	                str.focus(); 
	                return false;
	        } 
	return true;
	}

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq