jQuery Date Picker – desabilita datas passadas

Estou tentando ter um intervalo de datas selecionado usando o selecionador de data da interface do usuário.

No campo de / para, as pessoas não devem poder visualizar ou selecionar datas anteriores ao dia atual.

Este é o meu código:

$(function() { var dates = $( "#from, #to" ).datepicker({ defaultDate: "+1w", changeMonth: true, numberOfMonths: 1, onSelect: function( selectedDate ) { var option = this.id == "from" ? "minDate" : "maxDate", instance = $( this ).data( "datepicker" ), date = $.datepicker.parseDate( instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings ); dates.not( this ).datepicker( "option", option, date ); } }); }); 

Alguém pode me dizer como desabilitar as datas anteriores à data atual.

    Você deve criar um novo object de data e defini-lo como minDate quando inicializar os datepickers

         var dateToday = new Date(); var dates = $("#from, #to").datepicker({ defaultDate: "+1w", changeMonth: true, numberOfMonths: 3, minDate: dateToday, onSelect: function(selectedDate) { var option = this.id == "from" ? "minDate" : "maxDate", instance = $(this).data("datepicker"), date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings); dates.not(this).datepicker("option", option, date); } }); 

    Editar – a partir do seu comentário agora funciona como esperado http://jsfiddle.net/nicolapeluchetti/dAyzq/1/

    Declare a variável dateToday e use a function Date () para defini-la .. depois use essa variável para atribuir a minDate que é o parâmetro do datepicker.

     var dateToday = new Date(); $(function() { $( "#datepicker" ).datepicker({ numberOfMonths: 3, showButtonPanel: true, minDate: dateToday }); }); 

    É isso aí … A resposta acima foi muito útil … continue assim …

     $('#datepicker-dep').datepicker({ minDate: 0 }); 

    minDate:0 funciona para mim.

    Use a opção “minDate” para restringir a primeira data permitida. O valor “0” significa hoje (0 dias a partir de hoje):

      $(document).ready(function () { $("#txtdate").datepicker({ minDate: 0, // ... }); }); 

    Docs aqui: http://api.jqueryui.com/datepicker/#option-minDate

    Apenas para adicionar isso:

    Se você também precisar impedir que o usuário digite manualmente uma data no passado, essa é uma solução possível. Foi o que acabamos fazendo (com base na resposta de @Nicola Peluchetti)

     var dateToday = new Date(); $("#myDatePickerInput").change(function () { var updatedDate = $(this).val(); var instance = $(this).data("datepicker"); var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, updatedDate, instance.settings); if (date < dateToday) { $(this).datepicker("setDate", dateToday); } }); 

    O que isso faz é alterar o valor para a data de hoje se o usuário digitar manualmente uma data no passado.

    Demonstração ao vivo , tente isso,

      $('#from').datepicker( { minDate: 0, beforeShow: function() { $(this).datepicker('option', 'maxDate', $('#to').val()); } }); $('#to').datepicker( { defaultDate: "+1w", beforeShow: function() { $(this).datepicker('option', 'minDate', $('#from').val()); if ($('#from').val() === '') $(this).datepicker('option', 'minDate', 0); } }); 

    Documentação da API do jQuery – datepicker

    A data mínima selecionável. Quando definido como null , não há mínimo.

    Vários tipos suportados:

    Data: um object de data contendo a data mínima.
    Número: um número de dias a partir de hoje. Por exemplo, 2 representa two days partir de hoje e -1 representa yesterday .
    String: uma string no formato definido pela opção dateFormat ou uma data relativa.
    Datas relativas devem conter pares de valor e período; os períodos válidos são y para years , m para months , w para weeks e d para days . Por exemplo, +1m +7d representa one month and seven days partir de today .

    Para não exibir datas anteriores que não sejam hoje

     $('#datepicker').datepicker({minDate: 0}); 

    O atributo ” mindate ” deve ser usado para desabilitar datas passadas no jQuery datepicker.

    minDate: new Date () Ou minDate: ‘0’ é a chave para isso.

     Ex: $(function() { $( "#datepicker" ).datepicker({minDate: new Date()}); }); 

    OU

     $(function() { $( "#datepicker" ).datepicker({minDate: 0}); }); 

    apenas substitua seu código:

    código antigo:

     $("#dateSelect").datepicker({ showOtherMonths: true, selectOtherMonths: true, changeMonth: true, changeYear: true, showButtonPanel: true, dateFormat: 'yy-mm-dd' }); 

    novo Código:

     $("#dateSelect").datepicker({ showOtherMonths: true, selectOtherMonths: true, changeMonth: true, changeYear: true, showButtonPanel: true, dateFormat: 'yy-mm-dd', minDate: 0 }); 

    set startDate do datepicker, funciona, abaixo está o código de trabalho

     $(function(){ $('#datepicker').datepicker({ startDate: '-0m' //endDate: '+2d' }).on('changeDate', function(ev){ $('#sDate1').text($('#datepicker').data('date')); $('#datepicker').datepicker('hide'); }); }) 

    Esta é uma maneira fácil de fazer isso

     $('#datepicker').datepicker('setStartDate', new Date()); 

    Também podemos desativar dias futuros

     $('#datepicker').datepicker('setEndDate', new Date()); 

    você tem que declarar a data atual em variables ​​como esta

      $(function() { var date = new Date(); var currentMonth = date.getMonth(); var currentDate = date.getDate(); var currentYear = date.getFullYear(); $('#datepicker').datepicker({ minDate: new Date(currentYear, currentMonth, currentDate) }); }) 
     $( "#date" ).datetimepicker({startDate:new Date()}).datetimepicker('update', new Date()); 

    new Date() : function obter a data de hoje a data anterior está bloqueada. 100% de trabalho

    Eu criei a function para desativar a data anterior, desative dias de fim de semana flexíveis (como sábado, domingo)

    Estamos usando o método beforeShowDay do plugin jQuery UI datepicker.

      var NotBeforeToday = function(date) { var now = new Date(); //this gets the current date and time if (date.getFullYear() == now.getFullYear() && date.getMonth() == now.getMonth() && date.getDate() >= now.getDate() && (date.getDay() > 0 && date.getDay() < 6) ) return [true,""]; if (date.getFullYear() >= now.getFullYear() && date.getMonth() > now.getMonth() && (date.getDay() > 0 && date.getDay() < 6)) return [true,""]; if (date.getFullYear() > now.getFullYear() && (date.getDay() > 0 && date.getDay() < 6)) return [true,""]; return [false,""]; } jQuery("#datepicker").datepicker({ beforeShowDay: NotBeforeToday });