需要针对剑道网格过滤器的特定屏蔽功能

时间:2018-04-05 14:22:52

标签: javascript kendo-ui kendo-grid masking

我目前正在为日期的剑道网格列添加日期掩码。我有两个问题,但我遇到了这个问题。当我使用下面的代码全局添加掩码时,它按预期工作。

 function runDateMaskingUtility() {
            $("[data-role='datepicker']").each(function () {
                var datepicker = $(this);
                datepicker.kendoMaskedTextBox({
                    mask: "00/00/0000"
                });

                datepicker.kendoDatePicker({
                    format: "MM/dd/yyyy"
                });

                datepicker.closest(".k-datepicker")
                    .add(datepicker)
                    .removeClass("k-textbox");
            });                
        }

现在,当我这样做时,它正确地在列的过滤器标题中添加了屏蔽。问题是我们的日期格式如下:

  

3/01/2018或11/01/2018

当用户使用过滤器时,它会在一个月的前面附加一个数字,并且在这种情况下,过滤器找不到与之匹配的字符串。寻找(03/01/2018)数据时(3/01/2018)。我想通过我们所有的剃刀网格定义,并将日期格式化为两位数的月份,无论如何,但希望不是更新几十页,有一种方法,我可以使掩码正确处理。

第二个问题是,即使列的过滤器标题被屏蔽,当您单击列顶部的下拉列表以执行高级过滤器时,它们也不会在日期输入中包含该屏幕。我很确定这是因为它们是动态的,所以当我运行屏蔽功能时它不会触及这些滤波器输入。如何将屏蔽应用于这些过滤器?我试图绑定到“过滤器”列表项的悬停事件,然后显示高级过滤器窗体但没有成功。提前谢谢!

1 个答案:

答案 0 :(得分:1)

根据kendoMaskedTextBoxhttps://docs.telerik.com/kendo-ui/api/javascript/ui/maskedtextbox/configuration/mask#mask)的文档,数字支持以下掩码规则:

  • 0 - 数字。接受0到9之间的任何数字。
  • 9 - 数字或空格。接受0到9之间的任何数字,加上空格。
  • # - 数字或空格。像9规则,但也允许(+)和( - )标志。

鉴于你想要接受0到0之间的数字以及空格,你应该使用:

datepicker.kendoMaskedTextBox({
    mask: "90/90/0000"
});

而不是:

datepicker.kendoMaskedTextBox({
    mask: "00/00/0000"
});

我希望这能回答你的问题。