Ir para conteúdo
Fórum Script Brasil
  • 0

Validação especial de datas


Carlos Rocha

Pergunta

Pessoal.

Preciso de uma função para validar datas mas que seja especial.

Que tenha:

A) Valide data em branco;

B) Valide se data existe;

C) Valide se data é anterior à data do dia;

D) Se data é proporcional ao ano bisexto;

E) Que atenda às questões dos meses de fevereiro em seus 28 e 29 dias.

F) Que atenda à datas no formato DD/MM/AAAA.

alguém pode me ajudar?

Achei essa aqui:

http://forum.wmonline.com.br/topic/150300-...post__p__895288

Mas, se a data for por exemplo: 29/5/2010, ela não faz funciona (meu campo de data é ready only. E, se manualmente, trocar para 29/05/2010, ou seja, colocar o 0 no mês, ele diz que a data esta em formato errado.

O que fazer? Vocês conhecem alguma função para isso?

Segue meu form:

<form action="?acao=grava" name="form_data_final" method="post">
            
            <input name="data_final" id="data_final" type="text" SIZE="10" MAXLENGTH="10" value="" readonly="readonly"> 
            <input TYPE="button" NAME="btndata_final" VALUE="Calendário" Onclick="java script:popdate('document.form_data_final.data_final','pop1','150',document.form_data_final.data_final.value)">
           <span id="pop1" style="position:absolute"></span><p>
                        
            <input type="button" value="Gravar Lista" onclick="valida_data();">
          </form>

Preciso dizer tambem que estou usando um calendario em forma de botão ao lado da caixa de texto da data que entrega a data já no formato xx/xx/xxxx.

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Segue o script do Calendário.

Talvez alguém possa me ajudar fazer o calendario passar a entregar datas no formato 30/05/2010 e vez de 30/5/2011

grato a quem puder ajudar;

// construindo o calendário
 function popdate(obj,div,tam,ddd)
 {
     if (ddd) 
     {
         day = ""
         mmonth = ""
         ano = ""
         c = 1
         char = ""
         for (s=0;s<parseInt(ddd.length);s++)
         {
             char = ddd.substr(s,1)
             if (char == "/") 
             {
                 c++; 
                 s++; 
                 char = ddd.substr(s,1);
             }
             if (c==1) day    += char
             if (c==2) mmonth += char
             if (c==3) ano    += char
         }
         ddd = mmonth + "/" + day + "/" + ano
     }
   
     if(!ddd) {today = new Date()} else {today = new Date(ddd)}
     date_Form = eval (obj)
     if (date_Form.value == "") { date_Form = new Date()} else {date_Form = new Date(date_Form.value)}
   
     ano = today.getFullYear();
     mmonth = today.getMonth ();
     day = today.toString ().substr (8,2)
   
     umonth = new Array ("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro")
     days_Feb = (!(ano % 4) ? 29 : 28)
     days = new Array (31, days_Feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

    if ((mmonth < 0) || (mmonth > 11))  alert(mmonth)
     if ((mmonth - 1) == -1) {month_prior = 11; year_prior = ano - 1} else {month_prior = mmonth - 1; year_prior = ano}
     if ((mmonth + 1) == 12) {month_next  = 0;  year_next  = ano + 1} else {month_next  = mmonth + 1; year_next  = ano}
     txt  = "<table bgcolor='#efefff' style='border:solid #330099; border-width:2' cellspacing='0' cellpadding='3' border='0' width='"+tam+"' height='"+tam*1.1 +"'>"
     txt += "<tr bgcolor='#FFFFFF'><td colspan='7' align='center'><table border='0' cellpadding='0' width='100%' bgcolor='#FFFFFF'><tr>"
     txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+((mmonth+1).toString() +"/01/"+(ano-1).toString())+"') class='Cabecalho_Calendario' title='Ano Anterior'><<</a></td>"
     txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+( "01/" + (month_prior+1).toString() + "/" + year_prior.toString())+"') class='Cabecalho_Calendario' title='Mês Anterior'><</a></td>"
     txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+( "01/" + (month_next+1).toString()  + "/" + year_next.toString())+"') class='Cabecalho_Calendario' title='Próximo Mês'>></a></td>"
     txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+((mmonth+1).toString() +"/01/"+(ano+1).toString())+"') class='Cabecalho_Calendario' title='Próximo Ano'>>></a></td>"
     txt += "<td width=20% align=right><a href=java script:force_close('"+div+"') class='Cabecalho_Calendario' title='Fechar Calendário'><b>X</b></a></td></tr></table></td></tr>"
     txt += "<tr><td colspan='7' align='right' bgcolor='#ccccff' class='mes'><a href=java script:pop_year('"+obj+"','"+div+"','"+tam+"','" + (mmonth+1) + "') class='mes'>" + ano.toString() + "</a>"
     txt += " <a href=java script:pop_month('"+obj+"','"+div+"','"+tam+"','" + ano + "') class='mes'>" + umonth[mmonth] + "</a> <div id='popd' style='position:absolute'></div></td></tr>"
     txt += "<tr bgcolor='#330099'><td width='14%' class='dia' align=center><b>Dom</b></td><td width='14%' class='dia' align=center><b>Seg</b></td><td width='14%' class='dia' align=center><b>Ter</b></td><td width='14%' class='dia' align=center><b>Qua</b></td><td width='14%' class='dia' align=center><b>Qui</b></td><td width='14%' class='dia' align=center><b>Sex<b></td><td width='14%' class='dia' align=center><b>Sab</b></td></tr>"
     today1 = new Date((mmonth+1).toString() +"/01/"+ano.toString());
     diainicio = today1.getDay () + 1;
     week = d = 1
     start = false;

    for (n=1;n<= 42;n++) 
     {
         if (week == 1)  txt += "<tr bgcolor='#efefff' align=center>"
         if (week==diainicio) {start = true}
         if (d > days[mmonth]) {start=false}
         if (start) 
         {
             dat = new Date((mmonth+1).toString() + "/" + d + "/" + ano.toString())
             day_dat   = dat.toString().substr(0,10)
             day_today  = date_Form.toString().substr(0,10)
             year_dat  = dat.getFullYear ()
             year_today = date_Form.getFullYear ()
             colorcell = ((day_dat == day_today) && (year_dat == year_today) ? " bgcolor='#FFCC00' " : "" )
             txt += "<td"+colorcell+" align=center><a href=java script:block('"+  d + "/" + (mmonth+1).toString() + "/" + ano.toString() +"','"+ obj +"','" + div +"') class='data'>"+ d.toString() + "</a></td>"
             d ++ 
         } 
         else 
         { 
             txt += "<td class='data' align=center> </td>"
         }
         week ++
         if (week == 8) 
         { 
             week = 1; txt += "</tr>"} 
         }
         txt += "</table>"
         div2 = eval (div)
         div2.innerHTML = txt 
 }
   
 // função para exibir a janela com os meses
 function pop_month(obj, div, tam, ano)
 {
   txt  = "<table bgcolor='#CCCCFF' border='0' width=80>"
   for (n = 0; n < 12; n++) { txt += "<tr><td align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+("01/" + (n+1).toString() + "/" + ano.toString())+"')>" + umonth[n] +"</a></td></tr>" }
   txt += "</table>"
   popd.innerHTML = txt
 }

// função para exibir a janela com os anos
 function pop_year(obj, div, tam, umonth)
 {
   txt  = "<table bgcolor='#CCCCFF' border='0' width=160>"
   l = 1
   for (n=1991; n<2012; n++)
   {  if (l == 1) txt += "<tr>"
      txt += "<td align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+(umonth.toString () +"/01/" + n) +"')>" + n + "</a></td>"
      l++
      if (l == 4) 
         {txt += "</tr>"; l = 1 } 
   }
   txt += "</tr></table>"
   popd.innerHTML = txt 
 }

// função para fechar o calendário
 function force_close(div) 
     { div2 = eval (div); div2.innerHTML = ''}
     
 // função para fechar o calendário e setar a data no campo de data associado
 function block(data, obj, div)
 { 
     force_close (div)
     obj2 = eval(obj)
     obj2.value = data 
 }

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, parcialmente resolvi meu problema.

Restam apenas duas coisas para sanalo defdinitivamente.

Em uma função de validação de data, quero enviar o nome do formulario como parâmetro para depois resgata-lo

Tentei com eval mas não funcionou.

//document.form_data_final.submit();
                                                                        eval( "document." + formnome + ".submit();" )

A outra coisa é, no código do calendário que postei anteriormente, fazer ele entregar por exemplo: 02/02/2011 em vez de 2/2/2011 para que o código da validação funcione.

Bom pessoal, o caso do nome do formulario por variavel já resolvi. O caso era que, no momento de chamar a função, como o nome do formulario é uma string, tem que ser passado o parametro entro aspas. 'nome_form' e eu estava enviando direto sem aspas.

Agora só falta a questão do formato da data.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...