在jQuery和Razor中使用datepicker设置默认日期(c#)

问题描述:

我们有一个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文本框为空,无法解决此问题。你的建议会有帮助。提前致谢。

+0

如果您禁用JavaScript,文本框是否有值?这将帮助我们找出Razor或JS中存在的问题。另外 - 哪种格式是Razor将日期输出为? – 2013-03-08 11:12:16

+0

如果我禁用此控件的日期选择器,则日期显示为13-10-1988 00:00:00。 – RNH 2013-03-08 11:18:41

+0

把'console.log(dDate)'放在$(ctrl).datepicker({dateFormat:'dd/mm/yy','。')上面,你会得到什么? – 2013-03-08 11:23:09

我想这是因为日期格式是剃须刀渲染不匹配日期选取期待的格式。

您是否尝试将dateFormat: 'dd/mm/yy'更改为dateFormat: 'dd-mm-yyyy'

+0

..它不是'yyyy'..但'yy' – RNH 2013-03-08 11:45:38

试试这个:

defaultDate: $("#Date_Of_Birth").val(); 
+1

我想defaultDate只是告诉jQueryUI哪个日期最初应该在打开选择器时被选中,据我所知我吨,问题在于文本框不显示日期(即使在选择器已打开之前) – 2013-03-08 11:16:39

+0

RameshRams,它不工作.. – RNH 2013-03-08 11:23:28