Мне не нужна маска, но мне нужно что-то, что будет форматировать валюту (во всех браузерах) и не допускать ввода букв или специальных char. Спасибо за помощь
Пример:
Действителен: 50,00 $
$ 1,000.53
Недействительно: $w45.00
$ 34.3r6
Ответ 1
ПЛАН ПРОФЕССИОНАЛЬНОЙ ФОРМАТУРАЦИИ
http://code.google.com/p/jquery-formatcurrency/
Ответ 2
Еще один вариант (если вы используете брандмауэр ASP.Net): на вашем представлении вы можете сделать
<div>@String.Format("{0:C}", Model.total)</div>
Это будет правильно отформатировать. note (item.total double/decimal)
если в jQuery вы также можете использовать Regex
$(".totalSum").text('$' + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString());
Ответ 3
Развернув ответ на Melu, вы можете сделать это, чтобы функционировать код и обрабатывать отрицательные суммы.
Результат:
$ 5.23
- $5,23
function formatCurrency(total) {
var neg = false;
if(total < 0) {
neg = true;
total = Math.abs(total);
}
return (neg ? "-$" : '$') + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString();
}
Ответ 4
В качестве следствия того, почему плагин jQuery FormatCurrency является хорошим ответом, я хотел бы опровергнуть ваш комментарий:
1. code.google.com/p/jquery-formatcurrency - не отфильтровывает все буквы. Вы можете ввести одну букву и не удалить ее.
Да, formatCurrency() сам по себе не отфильтровывает буквы:
// only formats currency
$(selector).formatCurrency();
Но toNumber(), включенный в плагин formatCurrency, делает.
Вы так хотите сделать:
// removes invalid characters, then formats currency
$(selector).toNumber().formatCurrency();
Ответ 5
Используйте jquery.inputmask 3.x.
См. Demos здесь
Включить файлы:
<script src="/assets/jquery.inputmask.js" type="text/javascript"></script>
<script src="/assets/jquery.inputmask.extensions.js" type="text/javascript"></script>
<script src="/assets/jquery.inputmask.numeric.extensions.js" type="text/javascript"></script>
И код как
$(selector).inputmask('decimal',
{ 'alias': 'numeric',
'groupSeparator': '.',
'autoGroup': true,
'digits': 2,
'radixPoint': ",",
'digitsOptional': false,
'allowMinus': false,
'prefix': '$ ',
'placeholder': '0'
}
);
Основные характеристики:
- простой в использовании
- дополнительные части, которые были в маске
- возможность определения псевдонимов, которые скрывают сложность.
- маски даты/даты
- числовые маски
- много обратных вызовов
- неживые маски
- многие функции могут быть включены/отключены/настроены с помощью опций.
- поддерживает атрибуты readonly/disabled/dir = "rtl"
- поддержка атрибутов (ов) ввода-ввода данных
- поддержка нескольких масок
- поддержка regex-mask
- поддержка динамической маски
- поддержка предварительной обработки-маски
- форматирование значения/проверка без элемента ввода
Ответ 6
Раньше я использовал плагин валюты формата jquery, но в последнее время он был очень неудачным. Мне нужно только форматирование для USD/CAD, поэтому я написал собственное автоматическое форматирование.
$(".currencyMask").change(function () {
if (!$.isNumeric($(this).val()))
$(this).val('0').trigger('change');
$(this).val(parseFloat($(this).val(), 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString());
});
Просто установите класс любого ввода, который должен быть отформатирован как валюта <input type="text" class="currencyMask" />
, и он будет отформатировать его в любом браузере.
Ответ 7
Попробуйте валюту регулярного выражения с помощью jQuery (без плагина):
$(document).ready(function(){
$('#test').click(function() {
TESTCURRENCY = $('#value').val().toString().match(/(?=[\s\d])(?:\s\.|\d+(?:[.]\d+)*)/gmi);
if (TESTCURRENCY.length <= 1) {
$('#valueshow').val(
parseFloat(TESTCURRENCY.toString().match(/^\d+(?:\.\d{0,2})?/))
);
} else {
$('#valueshow').val('Invalid a value!');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" value="12345.67890" id="value">
<input type="button" id="test" value="CLICK">
<input type="text" value="" id="valueshow">
Ответ 8
Плагин jQuery для проверки формата валюты здесь
Auto Numeric - форматирование валюты стало проще.
Ответ 9
Jus натолкнулся на это, поскольку у меня была такая же проблема. Очень просто и быстро реализовать:
http://plentz.github.io/jquery-maskmoney/