2013-04-20 2 views
18

Я хотел отключить всю прошлую дату до текущей даты, а не с текущей даты. Я пытаюсь по самонастройки Datepicker библиотека «bootstrap-datepicker» и используя следующий код:Bootstrap datepicker отключение прошлых дат без текущей даты

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

Он отлично работает. Но это отключает дату до сегодняшнего дня.

Как пример, если сегодня 04-20-2013, и я отключил прошлые даты, установив startDate: new Date(). но я могу выбрать дату с 04-21-2013.

ОБНОВЛЕНО: я могу решить эту проблему следующим образом для UTC зоны:

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

или startDate: "+0d"

Но эти методы не работают, когда UTC это день вперед. Для моего клиента в Калифорнии это означает, что в 17:00 мой клиент больше не может выбирать свою локальную текущую дату как действительную дату. Чтобы исправить это, я временно использую startDate: "-1d", но, конечно, до 5, что означает, что вчера видно.

Кто-нибудь придумал лучший метод на данный момент, так как я не хочу говорить пользователям, чтобы они вводили дату UTC?

Заранее спасибо.

+0

Вы используете Bootstrap 2.0.4+ JQuery 1.7.1 +? –

+1

Я использую Bootstrap v2.2.1 и jQuery 1.8.1 – itskawsar

ответ

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

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

, если часовой пояс изменится в будущем, что произойдет? – itskawsar

+1

Я не совсем уверен. Вы можете взглянуть на этот поток: [Необходимо отображать локальные времена переходов DST с использованием Javascript Date Object] (http://stackoverflow.com/questions/7310560/need-to-display-local-times-over- dst-transitions-using-javascript-date-object) –

+0

, пожалуйста, проверьте мой обновленный вопрос. спасибо – itskawsar

6

var nowDate = new Date(); 
 
var today = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate(), 0, 0, 0, 0); 
 
\t $('#date').datetimepicker({ 
 
\t \t startDate: today 
 
\t });

16

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() 
    }); 
    } 
}); 

Это будет выделить дату по умолчанию в качестве 4/26/2015 (Апр 26, 2015) в календу ar при открытии и отключить все даты до текущей даты.

15

Использование minDate

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

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

Твой единственный ответ, который сработал для меня. Благодаря! –

+1

для простоты используйте 'moment.js' like' minDate: moment() ' –

+0

Это и @SaahithyanVigneswaran должны быть правильными ответами. – JohnA10

1
<script type="text/javascript"> 
$('.datepicker').datepicker({ 
    format: 'dd/mm/yyyy', 
    todayHighlight:'TRUE', 
    startDate: '-0d', 
    autoclose: true, 
}) 
+0

Не могли бы вы объяснить, почему это должно работать и почему это лучшее решение, чем принятый ответ от 2 лет назад? –

2

Отключить все прошлые даты

<script type="text/javascript"> 
     $(function() { 
      /*--FOR DATE----*/ 
      var date = new Date(); 
      var today = new Date(date.getFullYear(), date.getMonth(), date.getDate()); 

      //Date1 
      $('#ctl00_ContentPlaceHolder1_txtTranDate').datepicker({ 
       format: 'dd-mm-yyyy', 
       todayHighlight:'TRUE', 
       startDate: today, 
       endDate:0, 
       autoclose: true 
      }); 

     }); 
</script> 

Отключить все будушее

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

    //Date1 
    $('#ctl00_ContentPlaceHolder1_txtTranDate').datepicker({ 
     format: 'dd-mm-yyyy', 
     todayHighlight:'TRUE', 
     minDate: today, 
     autoclose: true 
    }); 
7

использование

startDate: '-0d' 

Как

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

Вы можете использовать атрибут данных:

<div class="datepicker" data-date-start-date="+1d"></div> 
3

Здесь он

<script> 
      $(function() { 
       var date = new Date(); 
       date.setDate(date.getDate() - 7); 

      $('#datetimepicker1').datetimepicker({ 
       maxDate: 'now', 
       showTodayButton: true, 
       showClear: true, 
       minDate: date 
      }); 
     }); 
    </script> 
0

отключить прошедшую дату просто использовать:

$('.input-group.date').datepicker({ 
     format: 'dd/mm/yyyy', 
     startDate: 'today' 
    }); 
0

Попробуйте:

$(function() { 
    $('#datetimepicker').datetimepicker({ minDate:new Date()}); 
}); 
1

Пожалуйста, обратитесь к скрипку http://jsfiddle.net/Ritwika/gsvh83ry/

**With three fields having date greater than the ** 
<input type="text" type="text" class="form-control datepickstart" /> 
<input type="text" type="text" class="form-control datepickend" /> 
<input type="text" type="text" class="form-control datepickthird" /> 

var date = new Date(); 
date.setDate(date.getDate()-1); 
$('.datepickstart').datepicker({ 
autoclose: true, 
todayHighlight: true, 
format: 'dd/mm/yyyy', 
    startDate: date 
}); 
$('.datepickstart').datepicker().on('changeDate', function() { 
    var temp = $(this).datepicker('getDate'); 
    var d = new Date(temp); 
    d.setDate(d.getDate() + 1); 
    $('.datepickend').datepicker({ 
autoclose: true, 
format: 'dd/mm/yyyy', 
startDate: d 
}).on('changeDate', function() { 
    var temp1 = $(this).datepicker('getDate'); 
    var d1 = new Date(temp1); 
    d1.setDate(d1.getDate() + 1); 
    $('.datepickthird').datepicker({ 
autoclose: true, 
format: 'dd/mm/yyyy', 
startDate: d1 
}); 
}); 
}); 
-1

Следующие работал для меня

$('.input-group.date').datepicker({ 
    format: 'dd/mm/yyyy', 
    startDate: new Date() 
}); 
+0

Это не отвечает на вопрос. Вы должны дать ответ, который исправит проблему, объясните, почему она работает, объясните, как это работает, таким образом могут узнать другие люди. Как вы пришли к этому ответу? Это то, что вы должны включить в свои ответы. Ваш ответ не поможет другим читателям в текущем состоянии. – GrumpyCrouton

Смежные вопросы