Telerik MVC CurrencyTextBox - форматирование пользовательских значений - PullRequest
0 голосов
/ 30 декабря 2011

(Прежде всего, я уже разместил это на форумах 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);
});

1 Ответ

0 голосов
/ 31 декабря 2011

Попробуйте то же самое, используя ascii-код для "." оператор (46). OnKeyPress, если вы найдете ascii код 46, измените формат для элемента управления ..

С уважением, Дхавал Шукла

...