我正在嘗試創建兩個日期輸入並且不在日期字段中顯示年份。我希望格式更容易閱讀 - 所以「星期五,4月19日」而不是「2013/4/19」。我將更常規的格式存儲在同時更新的備用字段中。這工作正常,除了當我選擇在未來一年的日期,然後回去點擊相同的日期輸入。它會在當年加載一個日期。這是一些測試代碼,用於顯示情況以及我嘗試解決此問題的方法。如何告訴jQuery UI datepicker dateFormat不包含它的那一年?
<form>
<input type="text" name="from" id="ff_from" class="date" value="" />
<input type="text" name="to" id="ff_to" class="date" value="" />
<div class="extra">
<p>Formatted version of dates</p>
<input type="text" disabled id="ff_from_formatted" value="" />
<input type="text" disabled id="ff_to_formatted" value="" />
</div>
</form>
<script>
// add n number of days
Date.prototype.addDays = function(n) {
this.setDate(this.getDate()+n);
return this;
};
$("#ff_from").datepicker({
dateFormat: "D, M dd",
altField:$("#ff_from_formatted"),
altFormat: "yy/mm/dd",
minDate:0,
onClose:function(){
$("#ff_to").focus();
}
}).change(function(){
var fromDate=new Date($("#ff_from_formatted").val());
var toDate=new Date($("#ff_to_formatted").val());
minToDate=fromDate.addDays(1);
if (fromDate >= toDate) {
$("#ff_to").datepicker("setDate", minToDate);
}
$("#ff_to").datepicker("option","minDate", minToDate);
});
$("#ff_to").datepicker({
dateFormat: "D, M dd",
altField:$("#ff_to_formatted"),
altFormat: "yy/mm/dd",
minDate:+1
});
</script>
測試在這裏:http://jsfiddle.net/ZpfAB/9/
要重現該問題
- 選擇是在2014年
- 點擊輸入字段中再次第一個字段的日期。它會加載當前日期。
編輯:下面的最終解決方案是得益於@clav幫助 - 這涉及移除altFields並使用隱藏輸入字段來代替。我使用opacity:0而不是display:none,因爲當使用display:none時,我在ff_to字段出現奇怪的錯誤。
<form>
<input type="text" id="ff_from_display" class="date"/>
<input type="text" name="from" id="ff_from" class="date" style="opacity:0;width:0;"/>
<input type="text" id="ff_to_display" class="date"/>
<input type="text" name="to" id="ff_to" class="date" style="opacity:0;width:0;" />
</form>
<script>
// add n number of days
Date.prototype.addDays = function(n) {
this.setDate(this.getDate()+n);
return this;
};
$('#ff_from_display').focus(function() {
$("#ff_from").datepicker('show');
});
$('#ff_to_display').focus(function() {
$("#ff_to").datepicker('show');
});
$("#ff_from").datepicker({
dateFormat: "yy/mm/dd",
minDate:0,
onClose:function(){
$("#ff_to_display").focus();
}
}).change(function(){
var fromDate = $("#ff_from").datepicker('getDate');
$('#ff_from_display').val($.datepicker.formatDate('D, M dd', fromDate));
var toDate=new Date($("#ff_to_formatted").val());
minToDate=fromDate.addDays(1);
if (fromDate >= toDate) {
$("#ff_to").datepicker("setDate", minToDate);
}
$("#ff_to").datepicker("option","minDate", minToDate);
});
$("#ff_to").datepicker({
dateFormat: "yy/mm/dd",
minDate:+1
}).change(function(){
var toDate = $("#ff_to").datepicker('getDate');
$('#ff_to_display').val($.datepicker.formatDate('D, M dd', toDate));
});
</script>
試着看看這個[link](http://jqueryui.com/datepicker/#date-range)和[link](http://jqueryui.com/datepicker/#dropdown-month-year ) –
@sentilkumar不等於,因爲年份是在那裏的日期格式。結果datepicker處理它很好。我試圖不顯示日期輸入內的一年。 – daamsie
U只是嘗試添加在minDate:0 ** ** minDate:0 + 365 **和minDate:+1 ** ** minDate:+1 + 365 **。這只是一種方式,但我不知道它可以幫助你。 –