在我单击 Datepicker 控件外部之前,不会触发 Kendo Datepicker 更改事件

Posted

技术标签:

【中文标题】在我单击 Datepicker 控件外部之前,不会触发 Kendo Datepicker 更改事件【英文标题】:The Kendo Datepicker change event does not fire until I click outside of Datepicker control 【发布时间】:2017-09-30 07:13:30 【问题描述】:

我有以下带有 datepicker 更改事件的 ASP.NET MVC 表单:

<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 控件之外的某个位置时提交,但它需要在日历中更改日期时立即提交。

我错过了什么?

【问题讨论】:

似乎它按预期工作,任何文本输入上的更改事件只会在失去焦点时触发。您可能必须根据日历点击或其他内容制作自己的事件。看起来很乱,所以你可能要重新考虑这个要求。 @gene 你试过下面的解决方案吗?有用吗? 【参考方案1】:

您是否尝试在验证器上设置 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>

【讨论】:

【参考方案2】:

我的建议是将整个“脚本”代码块放在“div='container'”之外。

【讨论】:

以上是关于在我单击 Datepicker 控件外部之前,不会触发 Kendo Datepicker 更改事件的主要内容,如果未能解决你的问题,请参考以下文章

WPF C# DatePicker 单击时打开日历

Mac上的DatePicker在按下返回键之前不会保存日期

如何调整 jQuery DatePicker 控件的大小

element ui 的datePicker 日期控件怎么获取到鼠标选中的时间

jqueryUI datepicker 在传递日期之前触发输入的模糊,避免/解决方法?

Bootstrap-Datepicker 图标单击事件不起作用