Regex Kendo UI kendoMaskedTextBox 24小时时钟
我正在尝试创建蒙面文本框,您可以在其中输入最多24:00,但我不能使正则表达式相互依赖。现在我能在25:00前打字了。如果第一个字符是2,我只需要能够输入<5。有人能帮忙吗Regex Kendo UI kendoMaskedTextBox 24小时时钟,regex,kendo-ui,kendo-maskedtextbox,Regex,Kendo Ui,Kendo Maskedtextbox,我正在尝试创建蒙面文本框,您可以在其中输入最多24:00,但我不能使正则表达式相互依赖。现在我能在25:00前打字了。如果第一个字符是2,我只需要能够输入{ //检查是否超过23小时 if(数字(fg.value?.split('d')[1]。子字符串(0,2))>23){ 常量值=fg.value.substring(0,5)+`+fg.value.substring(6); fg.设定值(值); } }, 200); } Thx,我可以看到正则表达式工作得非常完美。但我无法让它与kendoM
$(".hoursBox").kendoMaskedTextBox({
mask: "12:34",
rules: {
"1": /[0-2]/,
"2": /[0-9]/,
"3": /[0-5]/,
"4": /[0-9]/
}
});
您可以使用下面的正则表达式进行此操作
((?!00)[0-1][0-9]|2[1-4]):[0-5][0-9]
它的工作原理
[0-1]
中的任意一位[0-9]
中的任何东西(?!00)
:
)李>
[0-5]
中的任意一个[0-9]
中的任意一个<kendo-maskedtextbox
[includeLiterals]="true"
[formControl]="formGroup.get('duration')"
mask="000d12h34m"
[rules]="rules"
(keydown)="onKey(formGroup.get('duration'))"
>
</kendo-maskedtextbox>
public rules = {
'1': /[0-2]/,
'2': /[0-9]/,
'3': /[0-5]/,
'4': /[0-9]/,
};
public onKey(fg: FormControl) {
setTimeout(() => {
// check for hours > 23
if (Number(fg.value?.split('d')[1].substring(0, 2)) > 23) {
const value = fg.value.substring(0, 5) + ` ` + fg.value.substring(6);
fg.setValue(value);
}
}, 200);
}
公共规则={
'1': /[0-2]/,
'2': /[0-9]/,
'3': /[0-5]/,
'4': /[0-9]/,
};
公钥(fg:FormControl){
设置超时(()=>{
//检查是否超过23小时
if(数字(fg.value?.split('d')[1]。子字符串(0,2))>23){
常量值=fg.value.substring(0,5)+`+fg.value.substring(6);
fg.设定值(值);
}
}, 200);
}
Thx,我可以看到正则表达式工作得非常完美。但我无法让它与kendoMaskedTextBox一起工作。这不起作用:$(“.hoursBox”).kendoMaskedTextBox({掩码:“00:00”,规则:{“0”:/((?!00)[0-1][0-9]| 2[1-4]):[0-5][0-9]/});这对kendoMaskedTextBox不起作用,规则只是说在一位数内允许什么,而不是整个框。-我想-您必须使用$(id).keydown(仅限TwentyFourHoursOnly)和TwentyFourHoursOnly函数内对所有情况进行测试,使用e,preventDefault()如果不通过,我也会遇到同样的问题,但我会作弊,使用Asp Mvc验证,而不是欢迎使用StackOverflow。请考虑在发布片断时添加一些细节(即您的代码是如何工作的或您是如何解决特定问题的)。