Ошибка проверки календаря исчезает только после повторного выбора даты с помощью Jquery пользовательского интерфейса - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть похожий DatePicker, как показано ниже.

https://jqueryui.com/datepicker/

Проблема заключается в том, что приведенная ниже ошибка проверки не исчезает при выборе даты, а отображается только после второго выбора даты ,

То есть вначале я нажимаю кнопку «Отправить», которая вызывает все «требуемые» ошибки проверки, а затем выбираю дату из элемента управления Canlendar для каждого поля ввода даты. Возникла вышеуказанная проблема.

Ошибка другого элемента управления вводом текста (обычный текст, не может использоваться) не отображается при первом вводе данных.

Поле LastShipment обязательно для заполнения.

Просмотреть модель ниже:

   public class MyViewModel
{

    [Required]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd-MM-yy}", ApplyFormatInEditMode = true)]
    public DateTime? LastShipment { get; set; }
}

Страница просмотра с другими html элементами, опущенными ниже:

     <head>
            <meta charset="utf-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
           <link href="~/lib/jquery-ui-themes-1.12.1/themes/blitzer/jquery-ui.css" rel="stylesheet" />
        </head>

<form asp-action="Details" id="stock-form">
     <div asp-validation-summary="ModelOnly" class="text-danger"></div>

     for (int i = 0; i < Model.Items.Count(); i++)
    {
        <div class="form-group item-group col-last-shipment">
        <input asp-for="@Model.Items[i].LastShipment" class="form-control stock-item stock-input last-shipment" type="text" asp-format="{0:dd-MM-yy}" />
        <span asp-validation-for="@Model.Items[i].LastShipment" class="text-danger"></span>
         </div>
    }

     <div class="clear"></div>
     <div class="form-group">
        <input type="submit" value="Submit" class="btn btn-primary button-primary" />
       </div>
</form>
    <script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
    <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

        <script src="~/lib/jquery-ui-1.12.1/jquery-ui.js">
         </script>
            $("input.last-shipment").datepicker();
        </script>

, сгенерированным HTML для одного элемента управления датой ниже

<div class="form-group item-group col-last-shipment">
<input class="form-control stock-item stock-input last-shipment hasDatepicker input-validation-error" type="text" data-val="true" data-val-required="The LastShipment field is required." id="Items_3__LastShipment" name="Items[3].LastShipment" value="" aria-describedby="Items_3__LastShipment-error" aria-invalid="true">
 <span class="text-danger field-validation-error" data-valmsg-for="Items[3].LastShipment" data-valmsg-replace="true"><span id="Items_3__LastShipment-error" class="">The LastShipment field is required.</span></span>
</div>

1 Ответ

0 голосов
/ 10 апреля 2020

Установите следующий код в значения по умолчанию для вашего средства выбора даты, и как только будет выбрана другая дата, плагин валидатора перепроверит поле:

@model MyViewModel
<form asp-action="Details" id="stock-form">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>

    <div class="form-group item-group col-last-shipment">
        <input asp-for="@Model.LastShipment" class="form-control stock-item stock-input last-shipment" type="text" asp-format="{0:dd-MM-yy}" />
        <span asp-validation-for="@Model.LastShipment" class="text-danger"></span>
    </div>
    <div class="clear"></div>
    <div class="form-group">
        <input type="submit" value="Submit" class="btn btn-primary button-primary" />
    </div>
</form>
@section Scripts
{
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script>
        $("input.last-shipment").datepicker({
            onClose: function () {
                $(this).valid();
            }
        });

    </script>
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
}

Результат: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...