【发布时间】:2016-01-25 15:54:12
【问题描述】:
我需要在 Ext.Net 中配置 numberfield,但我找不到正确的输入掩码,可以选择允许直到两位小数(第三个小数等被丢弃,如果用户按键被完全忽略)。自然数的数量可以是任何东西。禁止使用负数。
我的案例:
- 54 -> 接受
- 155,89 -> 接受
- 10.234,01 -> 接受
- 5,2 -> 接受
- 1,23 -> 接受
- 12,258 -> 禁止
- 1,2,5 -> 禁止
- sdf123 -> 禁止
这是我迄今为止尝试过的(C# 代码):
X.NumberFieldFor(m => m.MyPoperty).ID("MyId").HideTrigger(true).MaskRe(@"/[\d,]/")
.Plugins(X.InputMask().ClearWhenInvalid(false)
.Mask("9?999,99")
);
X.NumberFieldFor(m => m.MyPoperty).ID("MyId").HideTrigger(true).MaskRe(@"/[\d,]/")
.Plugins(X.InputMask().ClearWhenInvalid(false)
.Mask("x,tt")
.MaskSymbols(symbols =>
{
symbols.Add(new MaskSymbol() { Name = "x", Regex = @"/^[0-9]*$/" });
symbols.Add(new MaskSymbol() { Name = "t", Regex = "[0-9]" });
})
);
X.NumberFieldFor(m => m.SuperficieRealSol).ID("MyId").HideTrigger(true)
.Plugins(X.InputMask().ClearWhenInvalid(false)
.Mask("x")
.MaskSymbols(symbols =>
{
symbols.Add(new MaskSymbol() { Name = "x", Regex = @"^\d+(\.\d{1,2})?$" });
})
);
X.NumberFieldFor(m => m.MyPoperty).ID("MyId")
.AllowExponential(false)
.DecimalPrecision(2)
.MinValue(0)
.HideTrigger(true);
我认为这里的问题是正则表达式和掩码符号之间的匹配。我看不到如何配置掩码和掩码符号以匹配多个键输入。 例如,如果我的面具是
x,t
- x 可以是任意自然数
\d+,与位数无关。 - t 将是
(?:,\d{1,2})?
但这种方法似乎行不通。
【问题讨论】:
-
decimals是什么意思?还有,为什么不允许12,258? -
用户只想输入两个数字,而不是更多。