如何在Ext.Net MVC4 razor语法中创建InputMask以接受01到24的范围

时间:2014-04-11 16:51:26

标签: asp.net-mvc-4 razor ext.net

我正在尝试接受自2000年和两周(从01到24)接受年份的输入,即200101,201324,但不像201325及更高 我的代码是这个:

X.TextFieldFor("fnPayment")
.FieldLabel("Payment Fortnight")
.Value((Model.fnPayment != null ? Model.fnPayment : ""))
.Note("YYYYFF")
.InputID("fnPayment")
.IDMode(IDMode.Legacy)
.Plugins(X.InputMask()
    .Mask("AABCPQ")
    .UnmaskOnBlur(true)
    .ClearWhenInvalid(true)
    .InvalidMaskText("Format must be YYYYQQ, where YYYY refers a year and QQ to fortnight. For example: 201401, 201424")
    .MaskSymbols(ls=> {
        ls.Add(new MaskSymbol { Name = "A", Regex = "[20]", Placeholder = "Y".ToCharArray()[0] });
        ls.Add(new MaskSymbol { Name = "B", Regex = "[012]", Placeholder = "Y".ToCharArray()[0] });
        ls.Add(new MaskSymbol { Name = "C", Regex = "[0-9]", Placeholder = "Y".ToCharArray()[0] });
        ls.Add(new MaskSymbol { Name = "P", Regex = "[012]", Placeholder = "Q".ToCharArray()[0] });
        ls.Add(new MaskSymbol { Name = "Q", Regex = "[0-9]", Placeholder = "Q".ToCharArray()[0] });
    })
)
.ID("fnPaymentContainer")

在我测试时,我发现唯一的方法就是接受01到29之间的任何数字,但是24之后无效,我试图限制用户错误。

¿任何想法?任何帮助都会很棒。

感谢先进。

1 个答案:

答案 0 :(得分:0)

我可以提出以下建议。

@(Html.X().TextField()
    .Plugins(
        Html.X().InputMask()
            .Mask("ABCCDE")
            .MaskSymbols(ms =>
                {
                    ms.Add(new MaskSymbol() { Name="A", Placeholder='Y', Regex="2" });
                    ms.Add(new MaskSymbol() { Name="B", Placeholder='Y', Regex="0" });
                    ms.Add(new MaskSymbol() { Name="C", Placeholder='Y', Regex="\\d" });
                    ms.Add(new MaskSymbol() { Name="D", Placeholder='Q', Regex="[0-2]" });
                    ms.Add(new MaskSymbol() { Name="E", Placeholder='Q', Regex="[0-4]" });
                }
            )
    )
)

唯一的问题 - 它允许输入" 00"在末尾。第二个字符取决于第一个字符。不幸的是,没有处理这种情况的功能。