(Прежде всего, я уже разместил это на форумах Telerik ( ссылка ), но этот сайт получает больше трафика, поэтому я надеюсь получить некоторую помощь раньше.)
Я пытаюсь добиться некоторого пользовательского форматирования значений с помощью CurrencyTextBox, но способ, которым элемент управления обрабатывает значения, делает вещи решительно трудными.
Я хочу сделать следующее: если пользователь вводит значение, которое не содержит «.» символ, это будет форматировать это значение в центах, а не в долларах. Поэтому, если пользователь вводит «16», я хочу, чтобы элемент управления отображал (и содержал значение) $ 0,16. Если пользователь вводит значение с ".", Я бы хотел, чтобы элемент управления функционировал как обычно. Если пользователь вводит «16.», «16.0» или «16.00», я хочу, чтобы элемент управления отображал (и содержал значение) «$ 16.00». Это приложение будет использоваться людьми в розничном бизнесе, и именно так они ожидают, что будут действовать входные данные для ценовых значений.
Однако, подписываюсь ли я на событие OnChange или даже на событие «размытия» в самом текстовом поле, оно удаляет «.» символ, если после него нет ничего или только 0 после него. Пример: если я введу значение «16.», «16.0» или «16.00», значение, извлеченное из текстового поля в javascript, будет «16». И так как я должен проверить наличие "." символ, это нарушает мою логику для правильного форматирования значения.
Так что я ищу помощь или предложения. Вот JavaScript, который у меня есть сейчас, чтобы правильно отформатировать значение по мере необходимости. Как видите, если значение не содержит «.» символ, значение делится на 100, что именно то, что я хочу. Удаление этого персонажа убивает мою логику. :)
$('custom-price').find('input').live('blur', function (e) {
var sender = $(this).data('tTextBox');
var priceVal = $(this).val(); // $(this).attr('value') also returns the value with the character stripped, FYI
if (priceVal.indexOf(".") == -1) {
priceVal = priceVal / 100;
}
sender.value(priceVal);
});