renderTpl ничем не поможет, это шаблон для создания разметки HTML, из которой потом получаются элементы DOM для поля. Тут проблема в другом: <input> элементы используются напрямую и вы редактируете то, что видите. Если бы <input type="number"> был чуть поумнее, то в общем можно было бы просто его использовать и забыть о проблеме, но к сожалению, толку от этого элемента на данный момент весьма мало.
Один из вариантов решения проблемы - при каждом изменении значения в поле ввода парсить текст, валидировать и выводить обратно в заданном формате. Это можно было бы сделать, если бы не запутанные потроха Ext.form.field.Base и Ext.form.field.Field, которые подобные штуки делать могут, но со скрипом. Плюс юзеры несколько теряются, когда в поле ввода появляются символы, которые они не вводили (разделители), или наоборот исчезают там, где вроде только что нажал кнопку.
Другой вариант - разделить редактирование и отображение. Скажем, сделать <input> прозрачным и подсунуть под него <div> с выводом значения. В таком случае проблема с валидированием ввода сводится к банальному выкусыванию ненужных символов, а форматировать можно уже как угодно - ввод и вывод разделены.
Но в таком случае вылезают проблемы с выделением текста. :(
В общем, как ни крути - браузеры это хлам. :(
|