Мне нужна конфигурация для числового поля в Ext.Net, но я не могу найти правильную маску ввода, которая необязательно допускает до двух десятичных знаков (третье десятичное число и т. д. отбрасываются, если пользователь нажимает клавишу, полностью игнорируется). Количество натуральных чисел может быть любым. Отрицательные числа запрещены.
Мои кейсы:
- 54 -> принято
- 155,89 -> принято
- 10.234,01 -> принято
- 5,2 -> принято
- 1,23 -> принято
- 12 258 -> запрещено
- 1,2,5 -> запрещено
- sdf123 -> запрещено
Это то, что я пробовал до сих пор (код С#):
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);
Я думаю, что проблема здесь в совпадении между регулярным выражением и символами маски. Я не понимаю, как настроить mask и masksymbols для соответствия более чем одному клавишному вводу. Например, если моя маска
x,t
- x будет любым натуральным числом
\d+
, количество цифр не имеет значения. - это будет
(?:,\d{1,2})?
Но этот подход, похоже, не работает.
decimals
? И почему12,258
нельзя? - person   schedule 25.01.2016