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

Datas anteriores


MTavares

Pergunta

Colegas,

eu tenho um calendário em javascript do qual consegui fazer com que as datas anteriores não apareçam linkados, porém quando eu passo para os meses anteriores, os links aparecem da mesma forma do mês atual. Por ex:

Vamos supor que estamos na data 15/11. As datas anteriores ao dia 15, não aparecem linkados, mas se eu for para o mês 10, acontece a mesma coisa e não todos os dias e assim por diante. O mesmo acontece quando vou para o mês 12, os dias a partir do dia 15 aparecem linkados e os dias anteriores não. Vejam o trecho do código abaixo:

var diaAtual=hoje.getDate();
var mesAtual=hoje.getMonth()+1;
var anoAtual=hoje.getFullYear();

if(i < diaAtual){
   $('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'>"+i+"<\/li>");
}else{
   $('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'><a href='#'>"+i+"<\/a><\/li>");
}

Abraços

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

6 respostass a esta questão

Posts Recomendados

  • 0

MTavares, de uma olhada no seu código.

if (i < diaAtual)

Você está comparando DIAS, e não DATAS.

O código está certo. Ele está fazendo exatamente o que pediram pra ele fazer (o DIA dessa data é menor do que o DIA da data atual?).

A sua lógica é que está furada.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu tentei colocar dessa forma:

var hojeCal=new Date();
var diaAtualCal=hojeCal.getDate();
var mesAtualCal=hojeCal.getMonth();
var anoAtualCal=hojeCal.getFullYear();

var dataCal=i+'/'+mesAtualCal+'/'+anoAtualCal;
if(dataCal < dataAtual){                                                
$('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'>"+i+"<\/li>");
}else{
$('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'><a href='#'>"+i+"<\/a><\/li>");
}

... mas somente os dias 10 até o dia 15 que não aparecem linkados...

abs

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Fiote... vou colocar o código inteiro, combinado?

function ultimo_dia(mes,ano){
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
return 31;
if(mes==4||mes==6||mes==9||mes==11)
return 30;
if(mes==2)if(ano%400==0)
return 29;
if(mes==2)
if(ano%100==0)
return 28;
if(mes==2)
if(ano%4==0)
return 29;
else 
return 28;
}
var nomeMes=new 
Array("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");
var hoje=new Date();
var diaAtual=hoje.getDate();
var mesAtual=hoje.getMonth()+1;
var anoAtual=hoje.getFullYear();
var dataAtual=diaAtual+'/'+mesAtual+'/'+anoAtual;
var contCalendario=0;
jQuery.fn.calendario=function(options){
var settings={target:'',targetDay:'',targetMonth:'',targetYear:'',minDate:'',maxDate:'',dateDefault:dataAtual,left:'0',top:'30',referencePosition:this,closeClick:true};
options=jQuery.extend(settings,options);
arrData=options.dateDefault.split('/');
diaOriginal=parseInt(arrData[0],10);
mesOriginal=parseInt(arrData[1],10)-1;
anoOriginal=parseInt(arrData[2],10);
var diaMinimo=0;
var mesMinimo=0;
var anoMinimo=0;
if(options.minDate!=''){
arrData=options.minDate.split('/');
diaMinimo=parseInt(arrData[0],10);
mesMinimo=parseInt(arrData[1],10)-1;
anoMinimo=parseInt(arrData[2],10);
}
var diaMaximo=9999;
var mesMaximo=9999;
var anoMaximo=9999;
if(options.maxDate!=''){
arrData=options.maxDate.split('/');
diaMaximo=parseInt(arrData[0],10);
mesMaximo=parseInt(arrData[1],10)-1;
anoMaximo=parseInt(arrData[2],10);
}
this.each(function(){
if(jQuery(this).attr('id')==''){
contCalendario++;
jQuery(this).attr('id','chamada_cal_'+contCalendario);
}
idChamada=jQuery(this).attr('id');
var mes=mesOriginal; 
var ano=anoOriginal;
idCalendario='cal_'+idChamada;
idCalendario=idCalendario.replace('_dia','').replace('_mes','').replace('_ano','');
if($('#'+idCalendario).size()>0)
return false;
jQuery('body').append('<div class="calendario" id="'+idCalendario+'"><a href="#" class="fechar" title="Fechar">X</a><a href="#" class="bt_controle_mes bt_voltar_mes">&laquo;</a><p class="nome_mes">mês ano</p><a href="#" class="bt_controle_mes bt_avancar_mes">&raquo;</a><ul class="lista_dia"><li class="semana">D</li><li class="semana">S</li><li class="semana">T</li><li class="semana">Q</li><li class="semana">Q</li><li class="semana">S</li><li class="semana">S</li></ul></div>');
$('#'+idCalendario).append('<input type="hidden" name="calendarioMes" value="'+mes+'"/>');
$('#'+idCalendario).append('<input type="hidden" name="calendarioAno" value="'+ano+'"/>');
function preencher_calendario(idCalendario){
var titulo=nomeMes[mes]+" "+ano;
$('#'+idCalendario+' p.nome_mes').html(titulo);
$('#'+idCalendario+' ul.lista_dia li.dia_vazio').remove();
$('#'+idCalendario+' ul.lista_dia li.dia').remove();
var primeiro=new Date();
primeiro.setFullYear(ano,mes,1);
var inicioSemana=primeiro.getDay();
for(i=0;i<inicioSemana;i++){
$('#'+idCalendario+' ul.lista_dia').append("<li class='dia_vazio'>&nbsp;<\/li>");
}
var fimMes=ultimo_dia(mes+1,ano);
É a partir do código abaixo:
for(i=1;i<=fimMes;i++){
if((ano==anoMinimo&&mes==mesMinimo&&i<diaMinimo)||(ano==anoMaximo&&mes==mesMaximo&&i>diaMaximo)){
$('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'>"+i+"<\/li>");
}else{
if(options.target!=''||options.targetDay!='' ||options.targetMonth!=''||options.targetYear!=''){

var hojeCal=new Date();
var mesAtualCal=hojeCal.getMonth()+1;
var anoAtualCal=hojeCal.getFullYear();

var dataCal=i+'/'+mesAtualCal+'/'+anoAtualCal;

if(dataAtual < dataCal){    
//    alert("dataAtual " +dataAtual+ " dataCal " +dataCal);                                            
$('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'>"+i+"<\/li>");
}else{
$('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'><a href='#'>"+i+"<\/a><\/li>");
}
}else{
$('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'>"+i+"<\/li>");
}
}
}
if(mes==mesOriginal&&ano==anoOriginal){
$('#'+idCalendario+' ul.lista_dia li.dia_n'+diaOriginal).addClass('default');
}
$('#'+idCalendario+' ul.lista_dia li a').click(function(){var dia=$.trim($(this).html());
if(dia.length==1)dia='0'+dia;
var mes=(1+parseInt($.trim($(this.parentNode.parentNode.parentNode).find('input[name="calendarioMes"]').val()),10)).toString();
if(mes.length==1)mes='0'+mes;
var ano=parseInt($.trim($(this.parentNode.parentNode.parentNode).find('input[name="calendarioAno"]').val()),10);
if(options.target!=''&&$(options.target).size()>0){
var tag=$(options.target).get(0).tagName.toLowerCase();
if(tag=='input'){
$(options.target).val(dia+'/'+mes+'/'+ano);
}else{
$(options.target).html(dia+'/'+mes+'/'+ano);
}
}
if(options.targetDay!=''&&$(options.targetDay).size()>0){
var tag=$(options.targetDay).get(0).tagName.toLowerCase();
if(tag=='input'){
$(options.targetDay).val(dia);
}else{
$(options.targetDay).html(dia);
}
}
if(options.targetMonth!=''&&$(options.targetMonth).size()>0){
var tag=$(options.targetMonth).get(0).tagName.toLowerCase();
if(tag=='input'){
$(options.targetMonth).val(mes);
}else{
$(options.targetMonth).html(mes);
}
}
if(options.targetYear!=''&&$(options.targetYear).size()>0){
var tag=$(options.targetYear).get(0).tagName.toLowerCase();
if(tag=='input'){
$(options.targetYear).val(ano);
}else{
$(options.targetYear).html(ano);
}
}
if(options.closeClick)$('#'+idCalendario).remove();return false;
});
navegacaoCalendario(idCalendario);
}
function navegacaoCalendario(idCalendario){
$('#'+idCalendario+' a.fechar').unbind();
$('#'+idCalendario+' a.fechar').click(function(){
$('#'+idCalendario).remove();
return false;
});
if(ano==anoMinimo&&mes==mesMinimo){
$('#'+idCalendario+' a.bt_voltar_mes').hide();
}else{
$('#'+idCalendario+' a.bt_voltar_mes').show();
$('#'+idCalendario+' a.bt_voltar_mes').unbind();
$('#'+idCalendario+' a.bt_voltar_mes').click(function(){
mes=parseInt($('input[name="calendarioMes"]').val(),10);
ano=parseInt($('input[name="calendarioAno"]').val(),10);
mes--;if(mes<0){
mes=11;ano--;
}
$('input[name="calendarioMes"]').val(mes);
$('input[name="calendarioAno"]').val(ano);
preencher_calendario(idCalendario);
return false;
});
}
if(ano==anoMaximo&&mes==mesMaximo){
$('#'+idCalendario+' a.bt_avancar_mes').hide();
}else{
$('#'+idCalendario+' a.bt_avancar_mes').show();
$('#'+idCalendario+' a.bt_avancar_mes').unbind();
$('#'+idCalendario+' a.bt_avancar_mes').click(function(){
mes=parseInt($('input[name="calendarioMes"]').val(),10);
ano=parseInt($('input[name="calendarioAno"]').val(),10);
mes++;if(mes==12){
    mes=0;ano++;
    }
    $('input[name="calendarioMes"]').val(mes);
    $('input[name="calendarioAno"]').val(ano);
    preencher_calendario(idCalendario);
    return false;
    });
    }
}
preencher_calendario(idCalendario);
var posicoes=$(options.referencePosition).offset();
var leftPosition=posicoes.left+parseInt(options.left,10);
var topPosition=posicoes.top+parseInt(options.top,10);
$('#'+idCalendario).css({
    'left':leftPosition,'top':topPosition
    });
    $('#'+idCalendario).show();
    });
    };

Abraços e obrigado!

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

  • 0

Coloquei dessa forma, mas também não funfou, veja:

var data1=i+'/'+mesAtual+'/'+anoAtual;
var data2=dataAtual;
if ( parseInt( data2.split( "/" )[2].toString() + data2.split( "/" )[1].toString() + data2.split( "/" )[0].toString() ) > parseInt( data1.split( "/" )[2].toString() + data1.split( "/" )[1].toString() + data1.split( "/" )[0].toString() ) ){

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...