Jump to content
Fórum Script Brasil
  • 0

Datas anteriores


MTavares

Question

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

Edited by MTavares
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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!

Edited by MTavares
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...