У меня есть форма 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, поэтому я также опубликовал здесь



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я пробовал с образцом кода: 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>
Но вы всегда можете установить для этого значение (сохранить модель значения формы / viewbag в скрытом поле):
$("#monthpicker").val("November 2013")
РЕДАКТИРОВАТЬ :
В качестве обходного пути вы можете добавить скрытое поле:
<input type = "hidden" id = "DeOrderDate" asp-for = "OrderDate"/>
А затем используйте JQuery для повторной привязки значения:
$("#FormID").trigger("reset");
$("#OrderDate").data('kendoDatePicker').value($("#DeOrderDate").val())
Это должно работать для особого сценария.
Я проверил предложенный вами образец приложения, и он работает так, как вы описали. Разница между моим и примером приложения в том, что моя модель снабжена аннотацией [DataType(DataType.Date)]public DateTime ManufactureDate { get; set; }, что устраняет проблему, но я не могу понять, почему. Также изменение строки формата на «dd / MM / yyyy» также заполняет ее.
@Reafidy Не уверен, или вы можете попробовать обходной путь из моего отредактированного ответа
Спасибо, я не уверен, что ваш способ обхода подходит. У меня есть до 100 датпикеров на одной странице, генерируемых динамически. Я все же посмотрю на это. Кажется, что при изменении формата datepicker переопределяет атрибут "value" форматом, так что вы получаете value = "dd/MM/yyyy". Итак, сброс возвращается к этому. Кажется странным.
Извините, я думал, что это сработало, но при тестировании произошла ошибка. Использование предоставленного вами кода делает то же самое для меня: просто сбрасывает datepicker на значение «d», а не на исходное значение модели.