Bootstrap datepicker disabling past dates without current date

178,031

Solution 1

var date = new Date();
date.setDate(date.getDate()-1);

$('#date').datepicker({ 
    startDate: date
});

Solution 2

Use minDate

var date = new Date();
var today = new Date(date.getFullYear(), date.getMonth(), date.getDate());

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

Solution 3

HTML

<input type="text" name="my_date" value="4/26/2015" class="datepicker">

JS

jQuery(function() {
  var datepicker = $('input.datepicker');

  if (datepicker.length > 0) {
    datepicker.datepicker({
      format: "mm/dd/yyyy",
      startDate: new Date()
    });
  }
});

That will highlight the default date as 4/26/2015 (Apr 26, 2015) in the calendar when opened and disable all the dates before current date.

Solution 4

use

startDate: '-0d'

Like

$("#datepicker").datepicker({
    startDate: '-0d',
    changeMonth: true
});

Solution 5

You can use the data attribute:

<div class="datepicker" data-date-start-date="+1d"></div>
Share:
178,031
itskawsar
Author by

itskawsar

Hello World!

Updated on February 25, 2021

Comments

  • itskawsar
    itskawsar about 3 years

    I wanted to disable all past date before current date, not with current date. I am trying by bootstrap datepicker library "bootstrap-datepicker" and using following code:

    $('#date').datepicker({ 
        startDate: new Date() 
    });
    

    It works fine. But it is disabling date till today.

    As example if today is 04-20-2013 and i disable past dates by setting startDate: new Date(). but I am able to select date from 04-21-2013.

    UPDATED: i can solve it as following for UTC zone:

    var d = new Date();
    options["startDate"] = new Date(d.setDate(d.getDate() - 1));
    

    or startDate: "+0d"

    But these methods don't work when UTC is a day ahead. For my client in California that means at 5:00 pm my client can no longer select his local current date as a valid date. In order to fix this I am temporarily using startDate: "-1d", but of course before 5 that means yesterday is visible.

    Has anyone come up with a better method for now as I do not want to tell users to put in a UTC date?

    Thanks in advance.