我目前正在为日期的剑道网格列添加日期掩码。我有两个问题,但我遇到了这个问题。当我使用下面的代码全局添加掩码时,它按预期工作。
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)。我想通过我们所有的剃刀网格定义,并将日期格式化为两位数的月份,无论如何,但希望不是更新几十页,有一种方法,我可以使掩码正确处理。
第二个问题是,即使列的过滤器标题被屏蔽,当您单击列顶部的下拉列表以执行高级过滤器时,它们也不会在日期输入中包含该屏幕。我很确定这是因为它们是动态的,所以当我运行屏蔽功能时它不会触及这些滤波器输入。如何将屏蔽应用于这些过滤器?我试图绑定到“过滤器”列表项的悬停事件,然后显示高级过滤器窗体但没有成功。提前谢谢!
答案 0 :(得分:1)
根据kendoMaskedTextBox
(https://docs.telerik.com/kendo-ui/api/javascript/ui/maskedtextbox/configuration/mask#mask)的文档,数字支持以下掩码规则:
鉴于你想要接受0到0之间的数字以及空格,你应该使用:
datepicker.kendoMaskedTextBox({
mask: "90/90/0000"
});
而不是:
datepicker.kendoMaskedTextBox({
mask: "00/00/0000"
});
我希望这能回答你的问题。