我們有一個common.js文件,其中包含常用的客戶端/ jQuery相關函數和驗證。這個common.js包含在_Layout.cshtml中。在這個common.js文件中,我們有日期選擇器的代碼,以保持整個應用程序一致性,如下,在jQuery和Razor中使用datepicker設置默認日期(c#)
function OsDatepicker(id, date, maxdt, dDate) {
var ctrl = "#" + id;
var d = new Date();
var currYear = d.getFullYear();
if (date == 0)
var yrrange = (parseInt(currYear) - 4) + ":" + (parseInt(currYear) + 2);
else
var yrrange = (parseInt(currYear) - 70) + ":" + (currYear);
$(ctrl).datepicker({ dateFormat: 'dd/mm/yy',
changeYear: true,
autoSize: true,
yearRange: yrrange,
constrainInput: true,
showOn: "both",
buttonImage: '../../../Content/images/Calendar.png',
buttonImageOnly: true,
showanim: "slide",
//defaultDate: dDate, //not working
inline: true
});
if (maxdt == 0)
$(ctrl).datepicker("option", "maxDate", "+0d");
$(ctrl).datepicker("option","setDate", new Date(dDate)); //not working
}
上述函數被調用,如下圖所示CSHTML腳本,
$(document).ready(function() {
var dobDate = $("#Date_Of_Birth").val();
var jtDate = dobDate.split(" ");
OsDatepicker('Date_Of_Birth', 1, 0, jtDate[0]);
});
我的剃刀代碼如下,對於出生
<div style="width: 260px; float: left; height: 45px;">
<label class="field_title">
@Html.LabelFor(model => model.Date_Of_Birth)</label>
<div class="form_input">
@Html.EditorFor(model => model.Date_Of_Birth)
@Html.ValidationMessageFor(model => model.Date_Of_Birth)
</div>
</div>
日期的上述標記是如下,
<input class="text-box single-line" id="Date_Of_Birth" name="Date_Of_Birth" type="text" value="13-10-1988 00:00:00" />
正如您所看到的模型正確提取日期,也正確地傳遞給OSDatepicker函數。
在加載表單時,DateofBirth文本框爲空,無法解決此問題。你的建議會有幫助。提前致謝。
如果您禁用JavaScript,文本框是否有值?這將幫助我們找出Razor或JS中存在的問題。另外 - 哪種格式是Razor將日期輸出爲? – 2013-03-08 11:12:16
如果我禁用此控件的日期選擇器,則日期顯示爲13-10-1988 00:00:00。 – RNH 2013-03-08 11:18:41
把'console.log(dDate)'放在$(ctrl).datepicker({dateFormat:'dd/mm/yy','。')上面,你會得到什麼? – 2013-03-08 11:23:09