#  > Desenvolvimento >  > Linguagens de Programação >  >  Validar form com várias funções Javascript

## MarcioRM

Bom dia a todos

Estou com um problema aqui para validar dois campos de um formulário, como podem ver, não sou um programador muito experiente, pois não conseguir validar DOIS campos é dose... heheheeh :-D

Meu formulário tem dois campos que o usuário vai informar no primeiro a data inicial e no segundo a data final que será necessária para gerar um relatório.

Preciso somente validar as datas no formato DD/MM/AAAA, já consegui fazer isso, com 4 funções diferentes:

validateFields() : verifica se os campos estão vazios
verifyDateIni() : verifica o primeiro campo, se dia/mes/ano são válidos
verifyDateEnd() : verifica o segundo campo, se dia/mes/ano são válidos
compareDate() : verifica se o segundo campo é menor que o primeiro

Verifiquei o funcionamento de cada uma, mas o que não to conseguindo fazer é passar por todas funções, para só então submeter o formulário.

A verificação até está sendo feita, mas me retorna TODAS as mensagens de erros... :x

Alguém tem alguma dica, ou algum outro script que faça isso de um jeito mais simples ?

Valeu pela atenção

----------


## DemonCyber

Será que você poderia explicar melhor o seu problema eu não entendi direito, mas acho que posso ajudar, agora estou um pouco sem tempo mas quando voltar para casa tratarei de ajuda-lo =].

* O que você quer é? 
- Analizar os dois campos antes de submetar a página
- Ao analizar os dois campos chamar as 4 funções
- Somente submeter caso as 4 funções estejam corretas 

Bom se puder disponha de mais informações que as pessoas lhe ajudaram com maior facilidade =] =]

Ei ei tenho uma indicação de documento para você, quem sabe lhe ajude para mim ajudou muito, e por favor não se sinta ofendido, sempre comento isso porque tem pessoas que se sentem ofendidas por qualquer coisa, o que estou querendo fazer é somente lhe ajudar.

Se seu inglês estiver bom
http://www.catb.org/~esr/faqs/smart-questions.html

O texto traduzido
http://www.celiojunior.com.br/comofazerperguntas.htm

Vale a pena conferir o texto =]

----------


## MarcioRM

Blz

Não fico ofendido não...  :Smile: 

Mas só acho que minha pergunta está BEM clara.

Tanto é que você entendeu exatamente minha necessidade :-D

O que eu preciso de ajuda é em relação a como fazer isso funcionar da maneira que comecei ou de qualquer outra maneira, pois pra mim o importante é que funcione, ou seja, que valide os dois campos com os formatos DD/MM/YYYY com datas válidas.

Estou vasculhando na internet/Google pra ver se consigo, mas só vim ao fórum porque já fiz isso, mas vou continuar tentando.

Valeu !!!

----------


## DemonCyber

EI EI cara eu fiz um exemplo para vc heheh =] mas nao se acustume pq geralmente nao faco isso hauhauuh mas hoje estou bonzinho e empolgado hauhauh =]
Espero q solucione seu problema.

<html>
<head>
<title>Multiplos campos sendo checados</title>
<script language="javascript">
//exemplo jah que nao sei o codigo da funcao =]
function validateFields(){
if(inicial.value == "nada =]")
return false
else
return true
}

function testar(){
alert("Feito em um Slackware 10.2 quase 11 =], e no emacs modo console =] =] ");
inicial = document.teste.inicial;
final = document.teste.final;
submeter = true;
if(validateFields(inicial) == false)
{
submeter = false;
alert("tosco nao validou o campo inicial com o valor correto x y pk delta ")
}
//... faca com as outras funcoes
//...
if(submeter == true){
alert("Parabens vc conseguiu vc venceu ehhh \o/ sim sim eu sou meio bobo huahauhu agora a pagina vai ser submetida");
document.teste.submit();
}
else
alert("Para continuar por favor luser complete os campos direito. Obrigado pela atencao =] ");
}
</script>
</head>
<body>
<FORM NAME="teste" METHOD="POST">
<input type="text" name="inicial" value="nada =]">
<input type="text" name="final" >
<input type="button" name="teste" onclick="testar()">
</FORM>
</body>
</html>

----------


## MarcioRM

hehehehe Valeu brow !

Mas eu já tinha conseguido o que eu queria, com um código "um pouquinho" maior :-P
Pra não dizer... *MONSTRUOSO* :-D

Tem gente que vai ver e pensar: "Nossa pra que tudo isso ?!!!?" heheheeh
Mas como eu disse antes, o importante é que tá funcionando já.

Obrigado !



```
function validateFields(){
 
diaI = ponto.dtIni.value.substr(0,2);
mesI = ponto.dtIni.value.substr(3,2);
anoI = ponto.dtIni.value.substr(6,4);
diaE = ponto.dtEnd.value.substr(0,2);
mesE = ponto.dtEnd.value.substr(3,2);
anoE = ponto.dtEnd.value.substr(6,4);
 
if ((diaI == "") | (mesI == "") | (anoI == "")){
		alert("Formato da data INICIAL inválido. Formato correto: dd/mm/aaaa.");
		ponto.dtIni.focus();
} else {
	if ((diaE == "") | (mesE == "") | (anoE == "")){
		alert("Formato da data FINAL inválido. Formato correto: dd/mm/aaaa.");
		ponto.dtEnd.focus();
	} else {
		if (ponto.dtIni.value.length != 10){
			alert("Formato da data INICIAL inválido. Formato correto: dd/mm/aaaa.");
			ponto.dtIni.focus();
		} else {
			if (ponto.dtEnd.value.length != 10){
				alert("Formato da data FINAL inválido. Formato correto: dd/mm/aaaa.");
				ponto.dtEnd.focus();
			} else {
				if ("/" != ponto.dtIni.value.substr(2,1) || "/" != ponto.dtIni.value.substr(5,1)){
					alert("Formato da data INICIAL inválido. Formato correto: dd/mm/aaaa.");
					ponto.dtIni.focus();
				} else {
					if ("/" != ponto.dtEnd.value.substr(2,1) || "/" != ponto.dtEnd.value.substr(5,1)){
					alert("Formato da data FINAL inválido. Formato correto: dd/mm/aaaa.");
					ponto.dtEnd.focus();
					} else {
 
//Inicio Validação campo DATA INICIAL
if (isNaN(diaI) || diaI > 31 || diaI < 1){
	alert("Dia inválido.");
	ponto.dtIni.focus();
} else { //Verifica se o mês tem 31 dias
	if (isNaN(mesI) || mesI > 12 || mesI < 1){
		alert("Formato do mês inválido.");
		ponto.dtIni.focus();
	} else {
		if (mesI == 4 || mesI == 6 || mesI == 9 || mesI == 11){
			if (diaI == "31"){
				alert("O mês informado não possui 31 dias.");
				ponto.dtIni.focus();
			} else {
				//alert("FUNFOU");
			}
		} else {
			//alert("FUNFOU");
		}
 
//Inicio Validação campo DATA FINAL
if (isNaN(diaE) || diaE > 31 || diaE < 1){
	alert("Dia inválido.");
	ponto.dtEnd.focus();
} else { //Verifica se o mês tem 31 dias
	if (isNaN(mesE) || mesE > 12 || mesE < 1){
		alert("Formato do mês inválido.");
		ponto.dtEnd.focus();
	} else {
		if (mesE == 4 || mesE == 6 || mesE == 9 || mesE == 11){
			if (diaE == "31"){
				alert("O mês informado não possui 31 dias.");
				ponto.dtEnd.focus();
			} else {
				//alert("FUNFOU");
				ponto.action = "RelatorioExcel0";
				ponto.submit();
			}
		} else {
 
		}
	}
}
}
}}}}}}}}
```

 
Abraço

----------

