jQuery-UIdateselect器默认date
我有一个jQuery-UIdateselect器的问题,我已经search和search,但我没有find答案。 我有以下代码:
<script type="text/javascript"> $(function() { $("#birthdate" ).datepicker({ changeMonth: true, changeYear: true, yearRange: '1920:2010', dateFormat : 'dd-mm-yy', defaultDate: '01-01-1985' }); }); </script>
我希望当用户在#birthdate
input中点击当前select的date是01-01-1985
,现在它设置当前date。
尝试传递一个Date
对象。 我不明白为什么它不能以你input的格式工作:
<script type="text/javascript"> $(function() { $("#birthdate" ).datepicker({ changeMonth: true, changeYear: true, yearRange: '1920:2010', dateFormat : 'dd-mm-yy', defaultDate: new Date(1985, 00, 01) }); }); </script>
http://api.jqueryui.com/datepicker/#option-defaultDate
通过Date对象指定实际date,或者在当前的dateFormat中指定一个实际的date,或者指定从今天开始的天数(例如+7)或者一系列值和句点('y'多年,'m'多个月, 'w'表示数周,'d'表示数天,例如'+ 1m + 7d'),或者为空。
您可以尝试使用下面的代码。
这将使默认date成为你正在寻找的date。
$('#birthdate').datepicker("setDate", new Date(1985,01,01) );
看见那个:
如果该栏位为空白,请在首次打开时将date设定为突出显示。 通过Date对象指定实际date,或者在当前的dateFormat中指定一个实际的date,或者指定从今天开始的天数(例如+7)或者一系列值和句点('y'多年,'m'多个月, 'w'表示数周,'d'表示数天,例如'+ 1m + 7d'),或者为空。
如果当前的dateFormat不被识别,你仍然可以使用Date对象使用new Date(year, month, day)
在你的例子中,这应该工作(我没有testing它):
<script type="text/javascript"> $(function() { $("#birthdate" ).datepicker({ changeMonth: true, changeYear: true, yearRange: '1920:2010', dateFormat : 'dd-mm-yy', defaultDate: new Date(1985,01,01) }); }); </script>
jQuery UI Datepicker被编码为始终使用类ui-state-highlight
来突出显示用户的本地date。 没有内置的选项来改变这一点。
在其他相关问题的答案中,类似地描述了一种方法,就是覆盖该类的CSS以匹配主题的ui-state-default
,例如:
.ui-state-highlight { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; color: #555555; }
但是,如果您使用的是dynamic主题,或者您的目标是突出显示不同的一天(例如,“今天”基于您的服务器的时钟而不是客户端的时钟),则这不是很有用。
另一种方法是重写负责突出显示当天的dateselect器原型。
假设您正在使用UI javascript的最小化版本,下面的代码片段可以解决这些问题。
如果您的目标是防止突出显示当天的事情:
// copy existing _generateHTML method var _generateHTML = jQuery.datepicker.constructor.prototype._generateHTML; // remove the string "ui-state-highlight" _generateHtml.toString().replace(' ui-state-highlight', ''); // and replace the prototype method eval('jQuery.datepicker.constructor.prototype._generateHTML = ' + _generateHTML);
这改变了相关的代码(为了可读性而未被最小化):
[...](printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') + [...]
至
[...](printDate.getTime() == today.getTime() ? '' : '') + [...]
如果你的目标是改变datepicker的“今天”的定义:
var useMyDateNotYours = '07/28/2014'; // copy existing _generateHTML method var _generateHTML = jQuery.datepicker.constructor.prototype._generateHTML; // set "today" to your own Date()-compatible date _generateHTML.toString().replace('new Date,', 'new Date(useMyDateNotYours),'); // and replace the prototype method eval('jQuery.datepicker.constructor.prototype._generateHTML = ' + _generateHTML);
这改变了相关的代码(为了可读性而未被最小化):
[...]var today = new Date();[...]
至
[...]var today = new Date(useMyDateNotYours);[...] // Note that in the minimized version, the line above take the form `L=new Date,` // (part of a list of variable declarations, and Date is instantiated without parenthesis)
而不是useMyDateNotYours
你当然也可以注入一个string,函数,或任何适合您的需求。
jquery Datepicker的defaultDate只设置默认的date,你点击你的领域时popup的日历上select。 如果你想在你input的默认dateAPPEAR之前,用户点击字段,你应该给你的领域val()。 像这样的东西:
$("#searchDateFrom").datepicker({ defaultDate: "-1y -1m -6d" }); $("#searchDateFrom").val((date.getMonth()) + '/' + (date.getDate() - 6) + '/' + (date.getFullYear() - 1));
如果要根据某些服务器时间将突出显示的date更新为不同date,则可以覆盖Date Picker代码以允许一个名为localToday
的新自定义选项,或者任何您想要命名的选项。
对jQuery UI DatePicker中所选答案的小调整突出显示“today”date
// Get users 'today' date var localToday = new Date(); localToday.setDate(tomorrow.getDate()+1); // tomorrow // Pass the today date to datepicker $( "#datepicker" ).datepicker({ showButtonPanel: true, localToday: localToday // This option determines the highlighted today date });
我已经覆盖了2个datepicker方法来有条件地使用“today”date而不是new Date()
的新设置。 新的设置被称为localToday
。
覆盖$.datepicker._gotoToday
和$.datepicker._generateHTML
像这样:
$.datepicker._gotoToday = function(id) { /* ... */ var date = inst.settings.localToday || new Date() /* ... */ } $.datepicker._generateHTML = function(inst) { /* ... */ tempDate = inst.settings.localToday || new Date() /* ... */ }
这是一个演示 ,显示完整的代码和用法: http : //jsfiddle.net/NAzz7/5/