Событие изменения Kendo Datepicker не сработает, пока я не нажму за пределами элемента управления Datepicker

У меня есть следующая форма ASP.NET MVC с datepicker изменить событие:

<div id="container">
    @using (Html.BeginForm("Reload", "DateOfFile", FormMethod.Post, new { returnUrl = this.Request.RawUrl, id = "formDate" }))
    {
       @(Html.Kendo().DatePicker()
          .Name("DateOfFile")
          .Value(Session["DateOfFile"] == null ? DateTime.Now : Convert.ToDateTime(Session["DateOfFile"].ToString()))
          .Events(e => e
          .Change("dt_picker_change")
          )
        )
          @Html.Hidden("returnUrl", this.Request.RawUrl)

           <script>
                function dt_picker_change() {
                    $("#container").kendoValidator({
                       rules: {
                          dateValidator: function (input) {
                          var value = $(input).val();
                          var date = kendo.parseDate(value);
                          //alert(date)
                          if (!date) {
                              return false;
                          }
                          $("#formDate").submit();
                       }
                    }); 
                }
           </script>
     }
</div>

В приведенном выше коде форма отправляется только тогда, когда я щелкаю где-то за пределами элемента управления DatePicker, но ее нужно отправить, как только дата изменится в календаре.

Что мне не хватает?

1 ответ

Я предлагаю взять весь ваш блок кода "script" и поместить его ВНЕ вашего "div='container" ".

Вы пытались установить validateOnBlur: false на своем валидаторе и проверить вводные данные при изменении события?

<div id="container">
        @using (Html.BeginForm("Reload", "DateOfFile", FormMethod.Post, new { returnUrl = this.Request.RawUrl, id = "formDate" }))
        {
           @(Html.Kendo().DatePicker()
              .Name("DateOfFile")
              .Value(Session["DateOfFile"] == null ? DateTime.Now : Convert.ToDateTime(Session["DateOfFile"].ToString()))
              .Events(e => e
              .Change("dt_picker_change")
              )
            )
              @Html.Hidden("returnUrl", this.Request.RawUrl)

               <script>
                    function dt_picker_change() {
                       $("#container").kendoValidator().data("kendoValidator").validate();
                    }

                    $("#container").kendoValidator({
                           validateOnBlur: false,
                           rules: {
                              dateValidator: function (input) {
                              var value = $(input).val();
                              var date = kendo.parseDate(value);


                              //alert(date)
                              if (!date) {
                                  return false;
                              }
                              $("#formDate").submit();
                           }
                        }); 

               </script>
         }
    </div>
Другие вопросы по тегам