10000 => 10 000
Вопрос по "большим" числам.
Надо разделить пробелами большие числа. Например: число 10000 (десять тысяч) надо показать в таком виде: 10 000. число 1000000 => 1 000 000 ... Если ли такая возможность в ExtJS? |
При сравнивании, вы сравниваете число 10000 с строкой 10 000
function reFormat(num){ return ('' + num).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 ') } alert(reFormat(10000)); alert(reFormat(1000000)); |
А так что бы оставалось числом - никак?
|
Цитата:
Жесть, как-же вы еще за программирование беретесь, если не понимаете, что такое число и как оно пишется |
Цитата:
В WinForms есть такая возможность, вшита в виджеты (контролы, компоненты). То есть, разделять число. И софтина видет это не как текст, а именно как число. Сейчас переписываю WinForm-приложения в WebForm. Большую часть уже переписал. Заказчик требует отображение числа в понятном ему формате, в данном случае с пробелами, у конкурентов такой формат отображения есть (у них тоже Web-сервисы: Ангуляр 1). Вот, я подумал, что ExtJS такой крутой и дорогой, может и у него есть такое "готовое" решение. Ну и вопрос в том, что раз я задал вопрос - значит не смог его решить и может кто сталкивался и знает как решить данную проблему. П.С. "как-же вы еще за программирование беретесь"? :-) :-) :-) П.С.2. Гуглом пользоваться умею: js Разделение разрядов числа пробелами Меня интересует ExtJS. |
Docs
Ext.util.Format.decimalSeparator = '.'; Ext.util.Format.thousandSeparator = ' '; Ext.util.Format.numberRenderer('0.000'); Ext.util.Format.number(123456, '0,0.00')выводит "123 456.00" |
А можно это как-то применить для: textfield или numberfield?
|
Посмотрел в код, боюсь что нет. :(
|
renderTpl - ?
|
renderTpl ничем не поможет, это шаблон для создания разметки HTML, из которой потом получаются элементы DOM для поля. Тут проблема в другом: <input> элементы используются напрямую и вы редактируете то, что видите. Если бы <input type="number"> был чуть поумнее, то в общем можно было бы просто его использовать и забыть о проблеме, но к сожалению, толку от этого элемента на данный момент весьма мало.
Один из вариантов решения проблемы - при каждом изменении значения в поле ввода парсить текст, валидировать и выводить обратно в заданном формате. Это можно было бы сделать, если бы не запутанные потроха Ext.form.field.Base и Ext.form.field.Field, которые подобные штуки делать могут, но со скрипом. Плюс юзеры несколько теряются, когда в поле ввода появляются символы, которые они не вводили (разделители), или наоборот исчезают там, где вроде только что нажал кнопку. Другой вариант - разделить редактирование и отображение. Скажем, сделать <input> прозрачным и подсунуть под него <div> с выводом значения. В таком случае проблема с валидированием ввода сводится к банальному выкусыванию ненужных символов, а форматировать можно уже как угодно - ввод и вывод разделены. Но в таком случае вылезают проблемы с выделением текста. :( В общем, как ни крути - браузеры это хлам. :( |
Часовой пояс GMT +3, время: 12:10. |