DatePicker не соблюдает сброс формы

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
322
1

Ответы 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>

Но вы всегда можете установить для этого значение (сохранить модель значения формы / viewbag в скрытом поле):

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

РЕДАКТИРОВАТЬ :

В качестве обходного пути вы можете добавить скрытое поле:

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

А затем используйте JQuery для повторной привязки значения:

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

Это должно работать для особого сценария.

Извините, я думал, что это сработало, но при тестировании произошла ошибка. Использование предоставленного вами кода делает то же самое для меня: просто сбрасывает datepicker на значение «d», а не на исходное значение модели.

Reafidy 27.11.2018 07:03

Я проверил предложенный вами образец приложения, и он работает так, как вы описали. Разница между моим и примером приложения в том, что моя модель снабжена аннотацией [DataType(DataType.Date)]public DateTime ManufactureDate { get; set; }, что устраняет проблему, но я не могу понять, почему. Также изменение строки формата на «dd / MM / yyyy» также заполняет ее.

Reafidy 27.11.2018 07:13

@Reafidy Не уверен, или вы можете попробовать обходной путь из моего отредактированного ответа

Nan Yu 27.11.2018 07:19

Спасибо, я не уверен, что ваш способ обхода подходит. У меня есть до 100 датпикеров на одной странице, генерируемых динамически. Я все же посмотрю на это. Кажется, что при изменении формата datepicker переопределяет атрибут "value" форматом, так что вы получаете value = "dd/MM/yyyy". Итак, сброс возвращается к этому. Кажется странным.

Reafidy 27.11.2018 07:29

Другие вопросы по теме