2016-11-22 5 views
0

Мне нужно настроить текстовое поле ExtJs, чтобы принимать только числа, которые могут быть положительными, отрицательными, целыми и десятичными значениями до 2 десятичных знаков. Я пробовал с maskeRe и регулярным выражением /^-?[0-9]\d*(\.\d+)?$/. Но он принимает только положительные целые числа. Пользователь не должен набирать символы с ограничениями. Также он должен принимать «-» только на первом месте и ». между и только один раз.Как ограничить текстовое поле ExtJs, чтобы принимать только числа, используя maskRe. (Должен принимать положительные, отрицательные, целочисленные и десятичные числа.)

Так оно и должно принять: 10, -10, 10,12, -10.34 т.д.

Link to my fiddle

Благодаря

ответ

1

Измените ваш maskRe на

maskRe: /[0-9.-]/, 
validator: function(v) { 
    return /^-?[0-9]*(\.[0-9]{1,2})?$/.test(v)? true : 'Only positive/negative float (x.yy)/int formats allowed!'; 
}, 

Точка заключается в том, что вы разрешаете некоторый символ с использованием maskRe (а не самого значения) и подтвердите ввод строки в пределах validator. Подробнее

шаблон:

  • ^ - начало строки
  • -? - дополнительный дефис
  • [0-9]* - ноль или более цифр
  • (\.[0-9]{1,2})? - дополнительная последовательность
    • \. - точка
    • [0-9]{1,2} - любые 1 или 2 цифры
  • $ - конец строки.
+0

Спасибо @Wiktor, это работает. Но мое требование заключается в том, что пользователь не должен иметь возможность вводить символ ограничения, а не показывать сообщение об ошибке. – Harshal

+0

Также он должен принимать '-' только на первом месте и '.' между и только один раз. Отредактировал мой вопрос. Извините за неполное требование. – Harshal

0

Вы можете использовать это свойство xtype: 'numberfield', он будет принимать все типы номеров. Для десятичного значения мы можем использовать decimalPrecision: 2.

Попробуйте, если код не будет работать, пожалуйста, предоставьте мне свой код. Чтобы я мог предложить вам лучшее решение.

Все самое лучшее :)

Смежные вопросы