Тема: 10000 => 10 000
Показать сообщение отдельно
  #10 (permalink)  
Старый 04.02.2017, 04:45
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

renderTpl ничем не поможет, это шаблон для создания разметки HTML, из которой потом получаются элементы DOM для поля. Тут проблема в другом: <input> элементы используются напрямую и вы редактируете то, что видите. Если бы <input type="number"> был чуть поумнее, то в общем можно было бы просто его использовать и забыть о проблеме, но к сожалению, толку от этого элемента на данный момент весьма мало.

Один из вариантов решения проблемы - при каждом изменении значения в поле ввода парсить текст, валидировать и выводить обратно в заданном формате. Это можно было бы сделать, если бы не запутанные потроха Ext.form.field.Base и Ext.form.field.Field, которые подобные штуки делать могут, но со скрипом. Плюс юзеры несколько теряются, когда в поле ввода появляются символы, которые они не вводили (разделители), или наоборот исчезают там, где вроде только что нажал кнопку.

Другой вариант - разделить редактирование и отображение. Скажем, сделать <input> прозрачным и подсунуть под него <div> с выводом значения. В таком случае проблема с валидированием ввода сводится к банальному выкусыванию ненужных символов, а форматировать можно уже как угодно - ввод и вывод разделены.

Но в таком случае вылезают проблемы с выделением текста. :(

В общем, как ни крути - браузеры это хлам. :(
Ответить с цитированием