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

calendario js no ie e chrome


Carlos Rocha

Pergunta

Ola pessoal.

Boa noite.

Tenho um script d eum calendario que peguei na internet que esta tendo dois problemas que já rachei a cabeça para entender e não consegui achar o erro.

1) No internet explorer, quando escolho qualquer data menor 10, ele adiciona um 0 antes do numero e faz, por exemplo, 09. Porem, quanda a data é a data do dia, ele não esta adicionando o 0. Daí, o script barra o prosseguimento do mesmo.

2) No chrome, aontece o seguinte. O script tem um validador para verificar se a data é maior ou menor que a data atual. Se menor que a data atual, ele barra a execução. Se a data foer posterior le deverá prosseguir com o screip. Porem, no chrome, qualquer data esta dando que é maior que a data do dia.

Calendario.js

// 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' " : "" )
             
                         var m = (mmonth+1).toString();                                           
                         if( d<9 ) d = '0'+d;                         
                         if( m<9 ) m = '0'+m;
             txt += "<td"+colorcell+" align=center><a href=java script:block('"+  d + "/" + m + "/" + 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
     
     novadata = data.split('/');
 }
validador
function valida_data(campo_data,formnome) {
        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 campo_data.';
        var vdt = new Date();
        var vdia = vdt.getDay();
        var vmes = vdt.getMonth();
        var vano = vdt.getYear();
        if ((campo_data.value.match(expReg)) && (campo_data.value!='')){
                var dia = campo_data.value.substring(0,2);
                var mes = campo_data.value.substring(3,5);
                var ano = campo_data.value.substring(6,10);
                if((mes==04 && dia > 30) || (mes==06 && dia > 30) || (mes==09 && dia > 30) || (mes==11 && dia > 30)){
                        alert("Dia incorreto !!! O mês especificado contém no máximo 30 dias.");
                        campo_data.focus();
                        return false;
                } else{ //1
                                if(ano%4!=0 && mes==2 && dia>28){
                                        alert("campo_data incorreta!! O mês especificado contém no máximo 28 dias.");
                                        campo_data.focus();
                                        return false;
                                } else{ //2
                                                if(ano%4==0 && mes==2 && dia>29){
                                                                alert("campo_data incorreta!! O mês especificado contém no máximo 29 dias.");
                                                                campo_data.focus();
                                                                return false;
                                                } else{ //3
                                                                if (ano > vano) {
                                                                                alert("campo_data incorreta!! Ano informado maior que ano atual.");
                                                                                campo_data.focus();
                                                                                return false;
                                                                }else{ //4
                                                                        document.getElementById(formnome).submit();
                                                                        // Ou dos dois modos abaixo:
                                                                        //document.form_data_final.submit();
                                                                        //eval( "document." + formnome + ".submit();" )
                                                                } //4-else
                                                } //3-else
                                }//2-else
                }//1-else                       
        } else { //5
                        alert(msgErro);
                        campo_data.focus();
                        return false;
        } //5-else
}

Como resolver isso?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

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,3k
    • Posts
      652,2k
×
×
  • Criar Novo...