在JQuery隐藏并显示日期字段后,MVC JQuery Datepicker无法启动

在JQuery隐藏并显示日期字段后,MVC JQuery Datepicker无法启动,jquery,asp.net-mvc,datepicker,Jquery,Asp.net Mvc,Datepicker,在MVC中,我在视图的共享文件夹中使用一个编辑器模板来激活日期选择器。 所以我的Date.cshtml看起来像这样 @model DateTime? @Html.TextBox("", Model.HasValue ? Model.Value.ToLongDateString() : string.Empty, new { @class = "datefield", type = "date", style = "width:200px;" }) <input name="Ass

在MVC中,我在视图的共享文件夹中使用一个编辑器模板来激活日期选择器。 所以我的Date.cshtml看起来像这样

@model DateTime?
@Html.TextBox("", Model.HasValue ? Model.Value.ToLongDateString() : string.Empty,
    new { @class = "datefield", type = "date", style = "width:200px;" })
<input name="Assessment.SsipAccreditationDate" class="datefield hasDatepicker" id="Assessment_SsipAccreditationDate" style="width: 200px;" type="date" value="" data-val="true" data-val-date="The field SSIP Accreditation Date must be a date.">
<button tabindex="-1" class="ui-datepicker-trigger" type="button">...</button>
<span class="field-validation-valid" data-valmsg-replace="false" data-valmsg-for="Assessment.SsipAccreditationDate">*</span>
在我看来,我有

<td class="rightCell">
    @Html.EditorFor(model => model.Assessment.SsipAccreditationDate)
    @Html.ValidationMessageFor(
                    model => model.Assessment.SsipAccreditationDate, "*")
</td>
连接它的脚本是这样的

var initialiseDate = function() {
    $(".datefield").datepicker({
        showOn: "both",
        dateFormat: "dd MM yy",
        changeMonth: true,
        changeYear: true
    }).next("button.ui-datepicker-trigger")
            .attr("tabIndex", "-1");
}
问题是,只有在已经有日期的时候,日期选择器才会弹出。如果该字段为空,则不会弹出

在ie开发者工具中,字段的标记如下所示

@model DateTime?
@Html.TextBox("", Model.HasValue ? Model.Value.ToLongDateString() : string.Empty,
    new { @class = "datefield", type = "date", style = "width:200px;" })
<input name="Assessment.SsipAccreditationDate" class="datefield hasDatepicker" id="Assessment_SsipAccreditationDate" style="width: 200px;" type="date" value="" data-val="true" data-val-date="The field SSIP Accreditation Date must be a date.">
<button tabindex="-1" class="ui-datepicker-trigger" type="button">...</button>
<span class="field-validation-valid" data-valmsg-replace="false" data-valmsg-for="Assessment.SsipAccreditationDate">*</span>

...
*
那么到底出了什么问题

编辑-问题的一个关键部分是,在jquery中,我显示和隐藏日期,这似乎起到了作用。在另一个页面上,我没有这个日期字段的问题。

试试看

如果当前值为空,则设置

$("#datefieldid").val('');
这将改变一切,数据纠错器不喜欢空值,我想试试看

如果当前值为空,则设置

$("#datefieldid").val('');

这将改变一切,数据纠错器不喜欢null我猜

Hi Emil,我已经编辑了这个问题,因为我意识到发生这种情况的关键因素是,在jquery中,我隐藏并显示了日期字段,这造成了差异,但我不知道为什么。当我显示日期字段时,我再次调用initialiseDate函数以确保日期选择器工作,但它不工作。嗨,Emil,我编辑了这个问题,因为我意识到发生这种情况的关键因素是,在jquery中,我隐藏并显示了日期字段,这造成了差异,但我不知道为什么。当我显示日期字段时,我再次调用initialiseDate函数以确保日期选择器工作,但它不工作。