Eliminar comas en los campos de entrada ‘en vivo’ en jQuery

Tengo una serie de cuadros de entrada en una tabla con un número de filas generadas dinámicamente como tales:

 ... 
Some Title Units Val/Unit Value

Ahora, tengo una llamada de desenfoque () para agregar comas cada vez que se sale de un cuadro de entrada para agregar comas con el ingenioso complemento Formateador de números , y simplemente hace esto:

  $(".commas").blur(function () { $(this).parseNumber({ format: "#,###", locale: "us" }); $(this).formatNumber({ format: "#,###", locale: "us" }); });  

Y funciona muy bien. Ahora, en el otro lado, también tengo un trozo de código que hace la forma matemática automáticamente en cada pulsación de tecla. Tiene una llamada en initialize () que se ve así:

  $(document).on('keyup', '#someDataTable', DoCalculations); 

La función que invoca se ve así:

 function DoCalculations() { $(this).find('tr').each(function () { var tUnits = $(this).find('.units').val(); var tValue = $(this).find('.value').val(); $(this).find('.autoTotal').val(Math.round(tUnits * tValue)); }); } 

Ahora, mi problema: necesito poder arrancar las comas para hacer los cálculos. Esperaba poder usar la función parseNumber () de NumberFormatter para hacer esto, pero tenía un pequeño ajuste. Este fue el código alternativo en DoCalculations para intentar lograr eso:

 function DoCalculations() { $(this).find('tr').each(function () { var tTotal; var tUnits = $(this).find('.units').val(); var tValue = $(this).find('.value').val(); tUnits = $.parseNumber(tUnits, { format: "#,###", locale: "us" }); tValue = $.parseNumber(tValue, { format: "#,###", locale: "us" }); tTotal = tUnits * tValue; tTotal = $.formatNumber(tTotal, { format: "#,###", locale: "us" }); $(this).find('.autoTotal').val(tTotal); }); } 

Pero vuelve con un error de tiempo de ejecución en NumberFormatter.js, donde no puede obtener la propiedad de numberString.indexOf de referencia no definida o nula. Línea 442 para ser exactos. Aunque no estoy seguro de por qué. Originalmente pensé que era porque había cuadros de entrada vacíos, pero resultó que no importaba.

Al final del día, necesito quitar las comas.

Eliminar caracteres es algo que las expresiones regulares sobresalen en:

 var tValue = parseFloat($(this).find('.value').val().replace(/,/g, '')); 

ACTUALIZAR

Si val() puede ser nulo / indefinido, puede agregar un cheque como este:

 var tValue = $(this).find('.value').val(); tValue = tValue ? parseFloat(tValue.replace(/,/g, '')) : 0; 
Intereting Posts