jQuerydateselect器 – 禁用过去的date

我正在尝试使用UIdateselect器来selectdate范围。

在从/到领域,人们不应该能够查看或select在当前之前的date。

这是我的代码:

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

有人可以告诉我如何禁用之前的date到目前的date。

您必须创build一个新的date对象,并在初始化dateselect器时将其设置为minDate

 <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/

声明dateTodayvariables,并使用Date()函数来设置它..然后使用该variables分配给作为datepicker参数的minDate。

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

就是这样…上面的回答真的很有帮助

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

minDate:0适合我。

使用“minDate”选项来限制最早的允许date。 值“0”表示今天(从今天起0天):

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

这里的文档: http : //api.jqueryui.com/datepicker/#option-minDate

只是为了补充一点:

如果您还需要防止用户过去手动键入date,这是一个可能的解决scheme。 这就是我们最终做的(基于@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); } }); 

如果用户在过去手动inputdate,则会将值更改为今天的date。

现场演示 ,试试这个,

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

jQuery API文档 – datepicker

最小可选date。 设置为null ,没有最小值。

支持多种types:

date:包含最小date的date对象。
号码:从今天开始的几天。 例如2表示从今天开始的two days-1表示yesterday
string:dateFormat选项定义的格式或相对date的string。
相对date必须包含价值和周期对; 有效期为y yearsmmonthswweeksddays 。 例如, +1m +7d代表从today one month and seven days +1m +7d one month and seven days

为了不显示除了今天以前的date

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

应该使用“ mindate ”属性来禁用jquery datepicker中的传递date。

minDate:new Date()或者minDate:'0'是这个的关键。

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

要么

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

只需要replace你的代码:

旧代码:

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

设置datepicker的startDate属性,它工作,下面是工作代码

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

这是简单的方法来做到这一点

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

我们也可以禁用未来的日子

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

你必须将当前date声明为这样的variables

  $(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() :函数获取今天的date上一个date被locking。 100%的工作

我已经创build了禁用以前date的function,禁用灵活的周末日(如周六,周日)

我们使用jQuery UI datepicker插件的beforeShowDay方法。

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/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 });