jquery - numeros - quitar separador de miles javascript
¿Cómo puedo formatear correctamente la moneda usando jquery? (10)
Ampliando la respuesta de Melu puede hacer esto para funcionalizar el código y manejar cantidades negativas.
Muestra de salida:
$ 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();
}
No necesito una máscara, pero necesito algo que formatee la moneda (en todos los navegadores) y no permita que se tipeen letras ni carácteres especiales. Gracias por la ayuda
Ejemplo:
Válido: $ 50.00
$ 1,000.53
No válido: $ w45.00
$ 34.3r6
Como corolario de por qué el complemento jQuery FormatCurrency es una buena respuesta, me gustaría refutar tu comentario:
1. code.google.com/p/jquery-formatcurrency: no filtra todas las letras. Puede escribir una sola letra y no la eliminará.
Sí, formatCurrency () por sí solo no filtra las letras:
// only formats currency
$(selector).formatCurrency();
Pero toNumber (), incluido en el complemento formatCurrency, sí lo hace.
Por lo tanto, quieres hacer:
// removes invalid characters, then formats currency
$(selector).toNumber().formatCurrency();
Jus se encontró con esto porque tenía el mismo problema. Muy simple y rápido de implementar:
Otra opción (si está utilizando la vista de navaja ASP.Net) es, en su opinión, puede hacer
<div>@String.Format("{0:C}", Model.total)</div>
Esto lo formatearía correctamente. nota (item.total es doble / decimal)
si en jQuery también puedes usar Regex
$(".totalSum").text(''$'' + parseFloat(total, 10).toFixed(2).replace(/(/d)(?=(/d{3})+/.)/g, "$1,").toString());
Para aquellos que no quieren agregar .00, he actualizado la respuesta de @melu para eliminar el .00 de la última:
$ (". totalSum"). text (''$'' + parseFloat (total, 10) .toFixed (2) .replace (/ (/ d) (? = (/ d {3}) +.) / g, " $ 1, "). ToString () .replace (''. 00'', '''') );
diferencia de salida:
total = 8900000
entonces la solución de @melu proporcionará
$8,900,000.00
pero esta solución proporcionará
$8,900,000
Pruebe la divisa de regexp con jQuery (sin complementos) :
$(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">
Editar: Nuevo comprobar un valor para válido / inválido
Solía usar el complemento de moneda de formato jquery, pero ha tenido errores recientemente. Solo necesito formatear para USD / CAD, así que escribí mi propio formato automático.
$(".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());
});
Simplemente configure la clase de cualquier entrada que deba formatearse como moneda <input type="text" class="currencyMask" />
y la formateará perfectamente en cualquier navegador.
Use jquery.inputmask 3.x. Ver demostraciones here
Incluir archivos:
<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>
Y codifica como
$(selector).inputmask(''decimal'',
{ ''alias'': ''numeric'',
''groupSeparator'': ''.'',
''autoGroup'': true,
''digits'': 2,
''radixPoint'': ",",
''digitsOptional'': false,
''allowMinus'': false,
''prefix'': ''$ '',
''placeholder'': ''0''
}
);
Reflejos:
- fácil de usar
- partes opcionales anywere en la máscara
- posibilidad de definir alias que ocultan la complejidad
- Máscaras de fecha / fecha y hora
- máscaras numéricas
- muchas devoluciones
- máscaras no codiciosas
- muchas características pueden ser habilitadas / deshabilitadas / configuradas por opciones
- admite los atributos readonly / disabled / dir = "rtl"
- admitir los atributos de entrada de datos de máscara (s)
- soporte multi-máscara
- soporte de máscara regex
- soporte de máscara dinámica
- preprocessing-mask support
- formateo / validación de valores sin elemento de entrada
jQuery plugin para ver el formato de moneda aquí Auto Numeric - Formateo de moneda fácil .
JQUERY FORMATCURRENCY PLUGIN
http://code.google.com/p/jquery-formatcurrency/