Я пытаюсь выбрать диапазон дат, используя команду выбора даты в интерфейсе.
в поле from/to люди не могут просматривать или выбирать даты, предшествующие настоящему.
Это мой код:
$(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 );
}
});
});
Может кто-нибудь сказать мне, как отключить даты, предшествующие текущей дате.
Вы должны создать новый объект даты и установить его как minDate
при инициализации datepickers
<label for="from">From</label> <input type="text" id="from" name="from"/> <label for="to">to</label> <input type="text" id="to" name="to"/>
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);
}
});
Изменить - из вашего комментария теперь он работает как ожидается http://jsfiddle.net/nicolapeluchetti/dAyzq/1/
Объявите переменную dateToday и используйте функцию Date(), чтобы установить ее. затем используйте эту переменную для назначения minDate, который является параметром datepicker.
var dateToday = new Date();
$(function() {
$( "#datepicker" ).datepicker({
numberOfMonths: 3,
showButtonPanel: true,
minDate: dateToday
});
});
Что это... Выше ответ был действительно полезен... продолжайте ребята...
$('#datepicker-dep').datepicker({
minDate: 0
});
minDate:0
работает для меня.
Используйте параметр "minDate", чтобы ограничить самую раннюю допустимую дату. Значение "0" означает сегодня (0 дней с сегодняшнего дня):
$(document).ready(function () {
$("#txtdate").datepicker({
minDate: 0,
// ...
});
});
Документы здесь: http://api.jqueryui.com/datepicker/#option-minDate
Чтобы добавить к этому:
Если вам также необходимо запретить пользователю вручную вводить дату в прошлом, это возможное решение. Это то, что мы закончили делать (на основе ответа @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);
}
});
Это означает изменение значения до сегодняшней даты, если пользователь вручную вводит дату в прошлом.
Live Demo, попробуйте это,
$('#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);
}
});
просто замените свой код:
старый код:
$("#dateSelect").datepicker({
showOtherMonths: true,
selectOtherMonths: true,
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'yy-mm-dd'
});
новый код:
$("#dateSelect").datepicker({
showOtherMonths: true,
selectOtherMonths: true,
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'yy-mm-dd',
minDate: 0
});
" mindate" должен использоваться для отключения прошедших дат в jquery datepicker.
minDate: new Date() Или minDate: '0' - ключ для этого.
Ex:
$(function() {
$( "#datepicker" ).datepicker({minDate: new Date()});
});
ИЛИ
$(function() {
$( "#datepicker" ).datepicker({minDate: 0});
});
документация jQuery API - datepicker
Минимальная дата выбора. Если установлено значение null
, минимального значения не существует.
Поддерживаются несколько типов:
Дата: Объект даты, содержащий минимальную дату.
Число: Несколько дней с сегодняшнего дня. Например 2
представляет two days
с сегодняшнего дня, а -1
представляет yesterday
.
Строка: Строка в формате, определяемом параметром dateFormat
или относительной датой.
Относительные даты должны содержать пары значений и периодов; действительные периоды y
для years
, m
для months
, w
для weeks
и d
для days
. Например, +1m +7d
представляет one month and seven days
из today
.
Чтобы не показывать предыдущие даты, отличные от сегодняшнего дня
$('#datepicker').datepicker({minDate: 0});
Это простой способ сделать это
$('#datepicker').datepicker('setStartDate', new Date());
также можно отключить будущие дни
$('#datepicker').datepicker('setEndDate', new Date());
установить атрибут startDate datepicker, он работает, ниже приведен рабочий код
$(function(){
$('#datepicker').datepicker({
startDate: '-0m'
//endDate: '+2d'
}).on('changeDate', function(ev){
$('#sDate1').text($('#datepicker').data('date'));
$('#datepicker').datepicker('hide');
});
})
Я создал функцию, чтобы отключить предыдущую дату, отключить гибкие выходные дни (например, субботу, воскресенье)
Мы используем beforeShowDay метод плагина jQuery UI datepicker.
<script src="/jquery.min.js"></script>
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
});
Здесь сегодня дата 15 сентября. Я отключил субботу и воскресенье.
$( "#date" ).datetimepicker({startDate:new Date()}).datetimepicker('update', new Date());
new Date()
: функция получает сегодняшнюю дату
предыдущая дата заблокирована.
100% работающий
вам нужно объявить текущую дату в переменных типа
$(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)
});
})