Ext.net Numberfield ограничивает ввод только двумя необязательными десятичными знаками с маской ввода

Мне нужна конфигурация для числового поля в 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})?

Но этот подход, похоже, не работает.


person lorddarkangel    schedule 25.01.2016    source источник
comment
Что вы имеете в виду под decimals ? И почему 12,258 нельзя?   -  person    schedule 25.01.2016
comment
Числа после десятичного знака en.wikipedia.org/wiki/Decimal_mark   -  person lorddarkangel    schedule 25.01.2016
comment
Пользователь хочет ввести только два числа, не более.   -  person lorddarkangel    schedule 25.01.2016


Ответы (1)


Регулярное выражение, описывающее все эти вещи,
@"^\d+(?:\.\d+)?(?:,\d{1,2})?$"

Если бы вы могли описать одну маску, она должна работать.

Расширенный

 ^ 
 \d+ 
 (?:
      \. \d+ 

 )?
 (?:
      ,
      \d{1,2} 
 )?
 $ 
person Community    schedule 25.01.2016