Функция Javascript toFixed()
Я пытаюсь отформатировать входные значения пользователя, используя следующую технику, но я получаю следующую ошибку в консоли Fire Bug
$(this).val(). toFixed не является функцией
$(".amount-text").bind('change',function () {
$(this).val(($(this).val()).toFixed(2));
});
Может кто-нибудь помочь мне в этом?
Ответы
Ответ 1
.val()
возвращает строку, чтобы использовать .toFixed()
на номер, который вам нужно будет сначала проанализировать на номер, например:
$(".amount-text").bind('change',function () {
$(this).val(parseFloat($(this).val()).toFixed(2));
});
Или с jQuery 1.4+, немного чище, по крайней мере для меня использовать функцию с .val()
:
$(".amount-text").bind('change',function () {
$(this).val(function(i, v) { return parseFloat(v).toFixed(2); });
});
Здесь вы можете попробовать здесь.
Ответ 2
toFixed
работает только с числом, сначала проанализируйте значение на число:
$(this).val(parseFloat($(this).val()).toFixed(2));
Ответ 3
Это потому, что val()
возвращает String
, а не Number
. Чтобы иметь возможность использовать toFixed()
, выполните следующие действия:
$(".amount-text").bind('change',function () {
$(this).val( (parseFloat($(this).val())).toFixed(2) );
});
или даже:
$(".amount-text").bind('change',function () {
$(this).val( (new Number($(this).val())).toFixed(2) );
});
Вы также можете сделать это немного более взломанно, поскольку:
$(".amount-text").bind('change',function () {
$(this).val( (0 + $(this).val()).toFixed(2) );
});
но я не рекомендую его для удобства чтения!