Calendário em Javascript em português usando jQuery

Este, é um plugin de jQuery, para mostrar calendário ao escolher uma data em um input, foi desenvolvido por mim (Danilo Augusto), para ser usado em alguns projetos na Click. O plugin tem uma série de opções para ser customizadas e pesa 9kb de javascript (ou 7kb na versão minificada).

Todos os exemplos e scripts estão disponíveis para download.

Opções do Plugin

Opção O que é? Padrão
target Objeto (input ou spam ou qualquer objeto) onde retornará a data escolhida no calendário
targetDay Objeto (input ou spam ou qualquer objeto) onde retornará o dia escolhido no calendário
targetMonth Objeto (input ou spam ou qualquer objeto) onde retornará o mês escolhido no calendário
targetYear Objeto (input ou spam ou qualquer objeto) onde retornará o ano escolhido no calendário
dateDefault Data selecionada ao abrir o calendário Data Atual
referencePosition Objeto de referência para posicionamento relativo this
top Nos calendários com posicao relativa / absoluta pode ser ajustado o top (em pixels) 0
left Nos calendários com posicao relativa / absoluta pode ser ajustado o left (em pixels) 0
closeClick O calendário é fechado quando clicado em alguma data true
minDate Data mínima em que o calendário deve permitir o usuário clicar
maxDate Data máxima em que o calendário deve permitir o usuário clicar

Como Invocar

Primeiro chame o jQuery, o script do calendário e o css dele:

		<script type="text/javascript" src="js/jquery-1.2.6.pack.js"></script>
		<script type="text/javascript" src="js/jquery-click-calendario-1.0.js"></script>
		<link href="_style/jquery.click-calendario-1.0.css" rel="stylesheet" type="text/css"/>
	

Detalhe importante:

Como o evento de calendário é atribuído ao elemento, a chamada do modal, deve estar ou depois do html, ou com onload. Para fazer com onLoad, coloque dentro o código do modal dentro do famoso ready do jQuery.

Exemplo simples

Esse é caso mais comum, o calendário é atribuído quando é clicado no input e o target (o próprio input), é onde vai apresentar o resultado do click do calendário.

<!-- HTML !-->
<input type="text" name="data_1" id="data_1" size="10" maxlength="10"/>

/* Javascript */
$('#data_1').focus(function(){
	$(this).calendario({
		target:'#data_1'
	});
});
		

Clique no input ( onfocus ) para abrir o calendário.

Exemplo com top e left

Com top e left é possível alterar a posição do calendário. A base (top: 0 e left: 0) é o inicio do elemento que chama o calendário

<!-- HTML !-->
<input type="text" name="data_2" id="data_2" size="10" maxlength="10"/>

/* Javascript */
$('#data_2').focus(function(){
	$(this).calendario({
		target:'data_2',
		top:0,
		left:130
	});
});
	

Clique no input ( onfocus ) para abrir o calendário.

Exemplo sem closeClick

O closeClick serve para fechar o calendário quando clicar em alguma data. O padrão dele é true, nesse exemplo vamos deixar false;

<!-- HTML !-->
<input type="text" name="data_3" id="data_3" size="10" maxlength="10"/>

/* Javascript */
$('#data_3').focus(function(){
	$(this).calendario({
		target:'data_3',
		closeClick:false
	});
});
	

Clique no input ( onfocus ) para abrir o calendário.

Exemplo com dateDefault

dateDefault é a data que vem selecionada no calendário, o default desse parâmetro é a data atual. No exemplo vamos colocar uma data qualquer.

<!-- HTML !-->
<input type="text" name="data_4" id="data_4" size="10" maxlength="10" value="13/12/2005" />

/* Javascript */
$('#data_4').focus(function(){
	$(this).calendario({
		target :'#data_4',
		dateDefault:$(this).val()
	});
});
	

Clique no input ( onfocus ) para abrir o calendário.

Exemplo com dia / mês / ano

É possível também dividir a data entre dia / mes e ano.

<!-- HTML !-->
<input type="text" name="data_5" id="data_5_dia" size="2" maxlength="2" value="28"/>
<input type="text" name="data_5" id="data_5_mes" size="2" maxlength="2" value="06"/>
<input type="text" name="data_5" id="data_5_ano" size="4" maxlength="4" value="1983"/>

/* Javascript */
$('#data_5_dia, #data_5_mes, #data_5_ano').focus(function(){
	$(this).calendario({
		targetDay :'#data_5_dia',
		targetMonth :'#data_5_mes',
		targetYear :'#data_5_ano',
		dateDefault: $('#data_5_dia').val()+"/"+$('#data_5_mes').val()+"/"+$('#data_5_ano').val(),
		referencePosition : '#data_5_dia'
	});
});
	

Clique em um dos inputs ( onfocus ) para abrir o calendário.



Exemplo com range de Data

Nos parâmetros minDate e maxDate é possível definir um range para a navegação do calendário. No exemplo abaixo, a data mínima “selecionável” é 10/11/2008 e a data máxima que se pode escolher é 25/01/2009

<!-- HTML !-->
<input type="text" name="data_6" id="data_6" size="10" maxlength="10" value="13/12/2008" />

/* Javascript */
$('#data_6').focus(function(){
	$(this).calendario({
		target :'#data_6',
		dateDefault:$(this).val(),
		minDate:'10/11/2008',
		maxDate:'25/01/2009'
	});
});
	

Clique no input ( onfocus ) para abrir o calendário.

Lembrando que todos os exemplos e scripts estão disponíveis para download.

Obrigado a todos que reportaram o bug do parseInt nos meses 08 e 09, o bug foi corrigido.

127 thoughts on “Calendário em Javascript em português usando jQuery

  1. Ola,

    Estou tentando usar com 2 campos de datas aonde quando selecionado o valor data1 a segunda aceita apartir dessa data, tudo certo. Mas gostaria que se clicasse na data1, sempre o calendario da data2 fechasse, e vice-versa. Tentei usar no blur $(‘#data1’).remove(), como alguns disseram, mas nesse caso fecha o input da data1 e não o calendário, algume pode me ajudar?

  2. Em primeiro lugar, parabens pelo script, simplesmente showww!

    Preciso usar duas datas, como faço para transferir o valor da primeira data para a segunda?

    Pois assim, o valor inicial da data2 seria o valor da data1.

  3. gostei do calendário, mas como muitos aí relataram exite o problema de que o calendário não fecha automaticamente ao sair do campo. Quando há mais de um campo na tela com o calendário configurado todos vão ficando aberto ao ganharem o foco.

    para resolver o problema inclui 3 linhas a mais no arquivo jquery.click-calendario-1.0.js,

    após a linha abaixo, bem no final do arquivo, inclui as 3 linhas abaixo:
    $(‘#’+idCalendario).show();

    $(“#”+idCalendario).data(“podefechar”, true);
    $(options.target).blur(function() { $(“#”+idCalendario).data(“podefechar”) && $(“#”+idCalendario).remove(); });
    $(“#”+idCalendario).mousedown(function() {
    $(“#”+idCalendario).data(“podefechar”, false); });

    resumo:

    criei uma variável de controle (podefechar) que indica se o calendário pode fechar no blur do target.

    Configurei o evento mousedown do calendário para desativar o fechamento automático caso o usuário clique no calendário, a partir daí o calendário só fecha quando o usuário selecionar a data ou clicar em fechar.

    a chamada do calendário fica apenas assim:

    $(‘#txt_data’).focus(function(){ $(this).calendario({ target:’#txt_data’}); });

    sem precisar configurar blur em cada lugar que for usar.

  4. Muito bom script! teria como abrir o calendario em forma de popup? (fora da pagina), e ao clicar fechar o popup retornando o valor? Obrigado!

  5. nossa perfeito,, serviu direitinho aqui,, claro vou colocar seus créditos… valeu !!!!!

  6. Olá,
    poderia me ajudar, não consegui fazer funcionar o calendário.

    clico no campo input e não faz nada.

    Desde já obrigado pela atenção, e parabéns pelos códigos.

  7. Olá, 1ªmente parabéns pelo post, gostaria de saber como faço ou onde altero para que ao sair do input o calendário fechar automaticamente.

    vlw Abração.

  8. Olá Danilo…

    Espero que esteja acompanhando as respostas…

    Eu tive um certo problema em relação a conflitos com outras bibliotecas… resolvi adicionando a linha inicial “(function(a){” e terminando com “})(jQuery);”

    Abaixo vou postar todo o código pois alterei mais algumas pouquissimas linhas evitando alguns outros pequenos bugs.

  9. /* Calendario jQuery UI
    version: 1.1
    By: Danilo
    Edited by: Pyetro SaFe – 02/07/2012 09:09:48:49 */
    (function(a){
    a.Calendario_cfgs=a.Calendario_cfgs||{Version: ‘1.1’};
    a.Calendario_cfgs.conf={
    cfgs:{
    target:”,
    targetDay:”,
    targetMonth:”,
    targetYear:”,
    minDate:”,
    maxDate:”,
    dateDefault: ”,
    left:’0′,
    top:’30’,
    referencePosition: this,
    closeClick: true
    }};

    a.fn.Calendario = function(ops){
    var defaults=a.Calendario_cfgs.conf.cfgs;
    var cfgs=(ops)?a.extend({}, defaults, ops):defaults;

    var ultimo_dia=function(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;

    cfgs.dateDefault=dataAtual;

    arrData = cfgs.dateDefault.split(‘/’);

    diaOriginal = parseInt(arrData[0],10);
    mesOriginal = parseInt(arrData[1],10)-1;
    anoOriginal = parseInt(arrData[2],10);

    // VERIFICANDO RANGE
    var diaMinimo = 0; var mesMinimo = 0;var anoMinimo = 0;
    if(cfgs.minDate!=”){
    arrData = cfgs.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(cfgs.maxDate!=”){
    arrData = cfgs.maxDate.split(‘/’);
    diaMaximo = parseInt(arrData[0],10);
    mesMaximo = parseInt(arrData[1],10)-1;
    anoMaximo = parseInt(arrData[2],10);
    }

    this.each(function(){

    // Verificando se o botao tem id, senão tem, vai atribuir um id pro botão, para evitar de gerar 2 calendarios
    if(a(this).attr(‘id’)==”){
    contCalendario++;
    a(this).attr(‘id’,’chamada_cal_’+contCalendario)
    }
    idChamada = a(this).attr(‘id’);

    var mes = mesOriginal;
    var ano = anoOriginal;

    // determinando id pro calendário
    idCalendario = ‘cal_’+idChamada;
    idCalendario = idCalendario.replace(‘_dia’,”).replace(‘_mes’,”).replace(‘_ano’,”);

    if(a(‘#’+idCalendario).size()>0) return false;

    //criando div
    a(‘body’).append(‘X«mês ano»DSTQQSS’);
    a(‘#’+idCalendario).append(”);
    a(‘#’+idCalendario).append(”);

    function preencher_calendario(idCalendario){

    // colocando ou alterando título do calendário
    var titulo = nomeMes[mes]+” “+ano;
    a(‘#’+idCalendario+’ p.nome_mes’).html(titulo);

    // Apagando dias do calendário (caso o usuario esteja avancando / voltando o mes)
    a(‘#’+idCalendario+’ ul.lista_dia li.dia_vazio’).remove();
    a(‘#’+idCalendario+’ ul.lista_dia li.dia’).remove();

    // Obtendo o dia da semana do primeiro dia do mês
    var primeiro = new Date();
    primeiro.setFullYear(ano,mes,1);
    var inicioSemana = primeiro.getDay();

    // Preenchendo dias vazios no calendário
    for(i=0;i<inicioSemana;i++){
    a('#'+idCalendario+' ul.lista_dia').append(" “);
    }

    // preenchendo dias do mes
    var fimMes = ultimo_dia(mes+1,ano);
    for(i=1;i<=fimMes;i++){
    if( (ano == anoMinimo && mes == mesMinimo && i diaMaximo ) ){
    a(‘#’+idCalendario+’ ul.lista_dia’).append(“”+i+””);
    } else {
    if(cfgs.target!=” || cfgs.targetDay != ” || cfgs.targetMonth != ” || cfgs.targetYear != ”){
    a(‘#’+idCalendario+’ ul.lista_dia’).append(““+i+””);
    } else {
    a(‘#’+idCalendario+’ ul.lista_dia’).append(“”+i+””);
    }
    }
    }
    // verificando se a data preenchida é hoje
    if(mes == mesOriginal && ano == anoOriginal){
    a(‘#’+idCalendario+’ ul.lista_dia li.dia_n’+diaOriginal).addClass(‘default’);
    }

    a(‘#’+idCalendario+’ ul.lista_dia li a’).click(function(){
    var dia = a.trim(a(this).html());
    if(dia.length==1)dia = ‘0’+dia;
    var mes = (1 + parseInt(a.trim(a(this.parentNode.parentNode.parentNode).find(‘input[name=”calendarioMes”]’).val()),10)).toString();
    if(mes.length==1)mes = ‘0’+mes;
    var ano = parseInt(a.trim(a(this.parentNode.parentNode.parentNode).find(‘input[name=”calendarioAno”]’).val()),10);

    if(cfgs.target!=” && a(cfgs.target).size()>0){
    var tag = a(cfgs.target).get(0).tagName.toLowerCase();
    if(tag==’input’){
    a(cfgs.target).val(dia+’/’+mes+’/’+ano);
    } else {
    a(cfgs.target).html(dia+’/’+mes+’/’+ano);
    }
    }
    if(cfgs.targetDay!=” && a(cfgs.targetDay).size()>0){
    var tag = a(cfgs.targetDay).get(0).tagName.toLowerCase();
    if(tag==’input’){
    a(cfgs.targetDay).val(dia);
    } else {
    a(cfgs.targetDay).html(dia);
    }
    }
    if(cfgs.targetMonth!=” && a(cfgs.targetMonth).size()>0){
    var tag = a(cfgs.targetMonth).get(0).tagName.toLowerCase();
    if(tag==’input’){
    a(cfgs.targetMonth).val(mes);
    } else {
    a(cfgs.targetMonth).html(mes);
    }
    }
    if(cfgs.targetYear!=” && a(cfgs.targetYear).size()>0){
    var tag = a(cfgs.targetYear).get(0).tagName.toLowerCase();
    if(tag==’input’){
    a(cfgs.targetYear).val(ano);
    } else {
    a(cfgs.targetYear).html(ano);
    }
    }

    if(cfgs.closeClick)a(‘#’+idCalendario).remove();
    return false;
    });
    navegacaoCalendario(idCalendario);
    }

    function navegacaoCalendario(idCalendario){

    a(‘#’+idCalendario+’ a.fechar’).unbind();
    a(‘#’+idCalendario+’ a.fechar’).click(function(){
    a(‘#’+idCalendario).remove();
    return false;
    });

    //alert(‘ano = ‘+ano+’ / mes = ‘+mes+’\nanoMinimo = ‘+anoMinimo+’ e mesMinimo ‘+mesMinimo);
    if(ano == anoMinimo && mes == mesMinimo){
    a(‘#’+idCalendario+’ a.bt_voltar_mes’).hide();
    } else {
    a(‘#’+idCalendario+’ a.bt_voltar_mes’).show();
    a(‘#’+idCalendario+’ a.bt_voltar_mes’).unbind();
    a(‘#’+idCalendario+’ a.bt_voltar_mes’).click(function(){
    mes = parseInt(a(‘input[name=”calendarioMes”]’).val(),10);
    ano = parseInt(a(‘input[name=”calendarioAno”]’).val(),10);
    mes–;
    if(mes < 0){
    mes = 11;
    ano–;
    }
    a('input[name="calendarioMes"]').val(mes);
    a('input[name="calendarioAno"]').val(ano);
    preencher_calendario(idCalendario);
    return false;
    });
    }

    if(ano == anoMaximo && mes == mesMaximo){
    a('#'+idCalendario+' a.bt_avancar_mes').hide();
    } else {
    a('#'+idCalendario+' a.bt_avancar_mes').show();
    a('#'+idCalendario+' a.bt_avancar_mes').unbind();
    a('#'+idCalendario+' a.bt_avancar_mes').click(function(){
    mes = parseInt(a('input[name="calendarioMes"]').val(),10);
    ano = parseInt(a('input[name="calendarioAno"]').val(),10);
    mes++;
    if(mes == 12){
    mes = 0;
    ano++;
    }
    a('input[name="calendarioMes"]').val(mes);
    a('input[name="calendarioAno"]').val(ano);
    preencher_calendario(idCalendario);
    return false;
    });
    }
    }

    preencher_calendario(idCalendario);

    //var posicoes = a(cfgs.referencePosition).offset();
    var posicoes = a(this).offset();
    var leftPosition = posicoes.left + parseInt(cfgs.left,10);
    var topPosition = posicoes.top + parseInt(cfgs.top,10);

    a('#'+idCalendario).css({
    'left':leftPosition,
    'top':topPosition
    });
    a('#'+idCalendario).show();

    });
    };
    })(jQuery);

  10. Danilo, o código que postei acima está com alguns erros por que alguma coisa na hora de enviar ou de mostrar conflitou o ‘”‘ (aspa dulpa)…

    vou enviar só as partes que alterei abaixo:

    “Começo do plugin, deixei as configurações padrões fora do código principal, por este motivo também precisei tirar a atribuição dateDefault: dataAtual, pois começou conflitar”!

    (function(a){
    a.Calendario_cfgs=a.Calendario_cfgs||{Version: ‘1.1’};
    a.Calendario_cfgs.conf={
    cfgs:{
    target:”,
    targetDay:”,
    targetMonth:”,
    targetYear:”,
    minDate:”,
    maxDate:”,
    dateDefault: ”,
    left:’0′,
    top:’30’,
    referencePosition: this,
    closeClick: true
    }};

    a.fn.Calendario = function(ops){
    var defaults=a.Calendario_cfgs.conf.cfgs;
    var cfgs=(ops)?a.extend({}, defaults, ops):defaults;

    var ultimo_dia=function(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;
    };

    “pelo mesmo motivo de conflito acima, fiz a atribuição manualmente, como abaixo”

    var nomeMes = new Array(“Janeiro”,…
    … var contCalendario = 0;
    // Linha adicionada
    cfgs.dateDefault=dataAtual;

    “O ultimo conflito foi nas ultimas linhas, então comentei e atribui manualmente”

    //var posicoes = a(cfgs.referencePosition).offset();
    var posicoes = a(this).offset();

    Após essas alterações funcionou perfeitamente sem conflitar com outra biblioteca que uso…

    Lembrando que dentro do código alterei também todas as referencias para jQuery de (jQuery, $) para “a”, exemplo: “$(this)” passou para “a(this)”.

    Outra coisa que poderia ser interessante atualizar o plugin, é adicionar toda a função calendário diretamente adicionando o evento onfocus dentro do plugin, um exemplo que acho que funciona, pois não testei, seria adicionando a seguinte sintaxe:

    // alterar a linha
    a(‘#’+idCalendario).show();

    // por
    idChamada.focus(function(){
    a(‘#’+idCalendario).show();
    )};
    Desta forma o desenvolver html/php/asp/etc, necessita apenas de fazer a chamada do plugin:
    $(‘.selector’).Calendario({ options });

    Ah e valeu pelo plugin muito bom…

    Ah, também lembrei de outra coisa que seria interessante adicionar, algumas configurações a mais na chamada do plugin: formato da data (dd,mm,yy/yy-mm-dd), seleção rápida de mes e de ano, criar um botão calendário do lado do campo text com opção de abrir o calendário só por ele…

    Vou continuar visitando esperando por atualizações, vlw Danilo…

  11. Danilo, parabéns! Muito bom seu plugin. Mas tenho uma dúvida: como eu coloco uma data mínima usando uma variável? Estou tentando assim mais não tá funcionando:
    var dataAtual = new Date();
    var dia = dataAtual.getDate();
    var mes = dataAtual.getMonth();
    var ano = dataAtual.getFullYear();
    var dataMin = dia+3+’/’+mes+’/’+ano;

    $(‘#data_2′).focus(function(){
    $(this).calendario({
    target:’#data_2’,
    top:0,
    left:460,
    minDate: dataMin
    });
    });

    Agradeço a atenção.

  12. Será que vc tem algum tutorial de como intregar esse tipo de codigo no meu codigo, estou tentantdo fazer ele funcionar em um codigo simples, mas como sou iniciante, eu nao sei onde devo posicionar os codigos nem onde devo colocar as tag. agradeço desde ja.

  13. Pessoal, para mim funcionou perfeitamente, mas só no IE. No FF não está funcionando e não dá erro. Clico na caixa de texto e o calendário não abre. Coloquei um alert pra ver se cai no método que chama o calendário e está caindo. Alguém mais teve este problema que estou tendo?

  14. Só posso dizer DEZ, nota DEZ!

    Estava tentando via html5 ???

    Que nada JS na cabeça!

    Thanks a lot.

  15. Estou tentando fechar o calendário na saída do campo data e não estou conseguindo.

  16. Fala pessoal, não sei se alguém ainda usa este exemplo. Vou deixar minha contribuição aqui.

    Eu fiz alguns pequenos ajustes no arquivo .js, no meu caso eu escondo o calendário quando o mouse sai de cima dele ou quando o campo de data não está em foco. Quando perde o foco tive que usar o setTimeout pois ele escondia o calendário antes de preencher valor, aí não preenchia nada. Basta inserir as seguintes linhas logo após o comando $(‘#’+idCalendario).show();

    $(‘#’+idCalendario).mouseleave(function(){
    $(‘#’+idCalendario).remove();
    });

    $(‘#’+idChamada).blur(function(){
    window.setTimeout(“$(‘#”+idCalendario+”‘).remove();”,100);

    });

  17. Sensacional! Consegui adaptar para que funcionasse em vários campos de datas simultaneamente:

    $(window).load(function(){
    $(‘.inputData’).focus(function(){
    $(this).calendario({
    target : ‘#’+$(this).attr(‘id’),
    dateDefault:$(this).val()
    }); }); });

    Na minha página, todos os inputs (do tipo text) que recebem datas têm a classe inputData. Veja que referenciei a classe no focus(function) e não o id. Porém, no target que é o resultado a ser colocado no campo, referenciei o id. Veja que concatenei ‘#’ com o id, já que o programador colocou o # como obrigatório.

  18. Senhores, precisei usar este plug-in e acabei fazendo uma pequena alteração, para poder “setar“ uma data inicial (que foi informada um primeiro input:

    ORIGINAL :
    arrData = options.dateDefault.split(‘/’);

    diaOriginal = parseInt(arrData[0],10);
    mesOriginal = parseInt(arrData[1],10)-1;
    anoOriginal = parseInt(arrData[2],10);

    // VERIFICANDO RANGE
    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);
    }

    Alterado para:
    arrData = options.dateDefault.split(‘/’);

    // VERIFICANDO RANGE
    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);
    }

    diaOriginal = parseInt(arrData[0],10);
    mesOriginal = parseInt(arrData[1],10)-1;
    anoOriginal = 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);
    }

    Mudei apenas a posição das variáveis: diaOriginal; mesOriginal; anoOriginal, pois quando o a data inicial era maior que o mê atual não estava “setando“ a data inicial.

    Em tempo: Parabéns ao Danilo, pelo excelente plug-in

Leave a Reply

Your email address will not be published. Required fields are marked *