DatePicker不尊重表单重置

时间:2018-11-26 20:30:26

标签: javascript jquery asp.net-core kendo-ui telerik

我有一个带各种文本框和kendo datepickers的asp.net表单。我允许用户填写表格,如果他们决定再次开始,我会为他们提供一个重置按钮。

重置按钮应将表格重置为其原始模型数据。为了清楚起见,我不想将表格重置为空白值,而是要将所有输入重置为其原始模型值。

这对于文本框效果很好,但是在按下“重置”按钮后,日期选择器仅显示“ d”而不是原始模型值。

我使用以下javascript / jquery重置表单:

$(this).closest('form')[0].reset();

这是我的提取表单代码和日期选择器:

<tr>
    <td><label asp-for="Aircraft.SerialNumber" class="frm-label"></label></td>
    <td>
        <input asp-for="Aircraft.SerialNumber" autocomplete="off" class="k-textbox k-state-disabled" style="width:400px" disabled />
        <span asp-validation-for="Aircraft.SerialNumber" class="text-danger"></span>
    </td>
</tr>
<tr>
    <td><label asp-for="Aircraft.ManufactureDate" class="frm-label"></label> 
    </td>
    <td>
        <kendo-datepicker name="DatePicker" for="Aircraft.ManufactureDate" class=""  style='width: 400px;' />
        <span asp-validation-for="Aircraft.ManufactureDate" class="text-danger"></span>
    </td>
</tr>

我不确定这个问题是否出在telerik小部件或我的jquery / javascript代码上,所以我还发布了here

1 个答案:

答案 0 :(得分:1)

我尝试了代码示例:https://demos.telerik.com/aspnet-core/datepicker/tag-helper

并使用:

$("#FormID").trigger("reset");

它可以成功地将datetimepicker重置为默认模型值:

  <kendo-datepicker name='datepicker'
                      for="OrderDate" 
                      style='width: 100%;'></kendo-datepicker>

但不适用于设置了静态值(更改为格式字符串)的datetimepicker:

  <kendo-datepicker name="monthpicker"
                      start="CalendarView.Year"
                      depth="CalendarView.Year"
                      format="MMMM yyyy"
                      value='DateTime.Parse("November 2011")'
                      style="width: 100%;"></kendo-datepicker>

但是您始终可以设置该值(将模型/视图包的值存储在隐藏字段中):

$("#monthpicker").val("November 2013")

编辑:

作为一种解决方法,您可以添加隐藏字段:

<input type="hidden" id="DeOrderDate" asp-for="OrderDate"/>

然后使用Jquery重新绑定值:

$("#FormID").trigger("reset");
$("#OrderDate").data('kendoDatePicker').value($("#DeOrderDate").val())

这应该适用于特殊情况。