【问题标题】:kendo Datepicker: Prevent closing picker when clicking a datekendo Datepicker:单击日期时防止关闭选择器
【发布时间】:2023-04-02 13:12:01
【问题描述】:

当我更改选择器中的日期时,选择器会被隐藏,如何在 kendo ui datePicker 中跳过此行为

【问题讨论】:

    标签: kendo-ui kendo-datepicker


    【解决方案1】:

    您可以替换日期选择器的 DateView 的更改方法,使其不会关闭弹出窗口:

    var datePicker = $("#sampleDate").kendoDatePicker({}).getKendoDatePicker();
    
    datePicker.dateView.options.change = function () {
        datePicker._change(this.value());
    };
    

    (demo)

    【讨论】:

    • 不错的解决方案,真的不知道它是如何工作的哈哈。知道如何使用常规 @(Html.Kendo().DatePicker() 来完成它吗?
    • @CSharper 你只能用 JS 改变那些内部结构;问题是您不知道 Kendo 控件何时完成加载(至少我不知道是否有办法),因此您可以更改小部件;我想你可以使用日期选择器的 open 事件并在打开选择器时以相同的方式更改 this.dateView.options.change
    • @CSharper 实际上,您可以使用相同的代码,只需将其放在 jQuery 就绪块中,并将其放在初始化日期选择器的代码之后
    【解决方案2】:

    只需在关闭事件上执行e.preventDefault()

    $("#datepicker").kendoDatePicker({
        close: function(e) {
            e.preventDefault(); //prevent popup closing
        }
    });
    

    Demo

    但是,您将无法再以任何方式关闭日期选择器,因此请确保仅在您想要保持日期选择器打开时才阻止默认设置。

    例如

    close: function(e) {
        if(keepOpen === true){
            e.preventDefault();
        }
    }
    

    【讨论】:

      【解决方案3】:

      尝试捕捉datePicker的变化事件

       $("#datepicker").kendoDatePicker()
            .Events(e =>
            {
                e.Change("JSFunction");
            })
      
      
      function JSFunction() {
         var datepicker = $("#datePickerId").data("kendoDatePicker");
          datepicker.open();
      }
      

      【讨论】:

      • 是的,我已经尝试了上述方法,但是一旦用户更改日期,它仍然会关闭选择器。
      猜你喜欢
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      相关资源
      最近更新 更多