我的問題是。爲什麼只有在8月和9月選擇CheckIn_Date時纔會發生此錯誤?jQuery。 ASP.NET MVC 3.日期選擇器錯誤?
我有一個項目使用ASP.NET MVC 3和jQuery的日期選擇器。假設我有3個文本框,分別命名爲CheckIn_Date
,CheckOut_Date
(這兩個使用datepicker)和Days
。
當我設置Days = 3時,我選擇CheckIn_Date = 2012-01-01,我的CheckOut_Date會自動計算日期並將值設置爲2012-01-03。
一切如我所料,直到我在我的CheckIn_Date中選擇2012-08-01並設置Days = 3. 我的CheckOut_Date值不是2012-08-04而是2012-12-04。只有在8月和9月選擇我的CheckIn_Date時纔會發生這種情況。選擇其他月份會給我我的CheckOut_Date的期望。
這裏是我的代碼:
$("input[data-datepicker='true']").change(function() {
var id = $(this).attr("name");
var days = parseInt($("#maxProgramDays").val());
//var o = new Date();
var val = $(this).val();
var s = val.split("-");
var x = [];
var thisDate = new Date();
thisDate.setFullYear(parseInt(s[0]), parseInt(s[1]) - 1, parseInt(s[2]));
//alert(thisDate.toDateString())
if (id == "Reservation[0].CheckIn_Date") {
thisDate.setDate(thisDate.getDate() + days);
x['year'] = thisDate.getFullYear();
x['month'] = m2d(thisDate.getMonth() + 1);
x['day'] = m2d(thisDate.getDate());
$("input[name='Reservation[0].CheckOut_Date']").val(x['year'] + '-' + x['month'] + '-' + x['day']);
//alert(thisDate.toDateString())
}
if (id == "Reservation[0].CheckOut_Date") {
thisDate.setDate(thisDate.getDate() - days);
x['year'] = thisDate.getFullYear();
x['month'] = m2d(thisDate.getMonth() + 1);
x['day'] = m2d(thisDate.getDate());
$("input[name='Reservation[0].CheckIn_Date']").val(x['year'] + '-' + x['month'] + '-' + x['day']);
//alert(thisDate.toDateString())
}
這是我的觀點:
<div class="display-label">Program Days</div>
<div class="display-field"><span id="pDays"></span></div>
<div class="editor-label">@Html.LabelFor(model => model.Reservation[0].CheckIn_Date)</div>
<div class="editor-field reserveDate">
@Html.Datepicker("Reservation[0].CheckIn_Date", "")
@Html.ValidationMessageFor(model => model.Reservation[0].CheckIn_Date)
</div>
<div class="editor-label">@Html.LabelFor(model => model.Reservation[0].CheckOut_Date)</div>
<div class="editor-field reserveDate">
@Html.Datepicker("Reservation[0].CheckOut_Date", "")
@Html.ValidationMessageFor(model => model.Reservation[0].CheckOut_Date)
</div>
什麼是'm2d'?它是一個自定義的JavaScript函數嗎?發佈代碼。 – 2012-01-18 08:49:53
對於遲迴復感到抱歉,是m2d是這樣的函數:m2d(m){var x;如果(parseInt(m)<10){ x ='0'+ m;其他{ x = m; } return x; } – 2012-01-20 01:43:29
+1問題,發現有趣的解決方案。 – 2012-01-20 06:08:20