2009-05-07 52 views
27

Tengo una función de JavaScript que acepta un número y realiza una operación matemática en el número. Sin embargo, el número que paso podría tener una coma, y ​​debido a mi experiencia limitada con Javascript, tengo problemas para trabajar con ese valor. No parece tratar eso como un tipo numérico.Números con comas en Javascript

¿Cuál es la forma más fácil de tomar un parámetro con un valor de 1,000 y convertirlo a un número 1000?

+11

@Mike C.-s Algunas personas solo atacan preguntas que no entienden, no sé por qué, simplemente lo hacen – TStamper

+0

Parece contraproducente para todo. Desearía que mostrara un registro de quién votó negativamente, pero creo que eso generaría resentimiento. –

Respuesta

35

Puede configurar el cuadro de texto para tener una onBlur () función de modo que cuando el usuario intenta salir del cuadro de texto, a continuación, quitar las comas del valor mediante el uso de el javascript reemplazar función

ejemplo:

function checkNumeric(objName) 
    { 
    var lstLetters = objName; 

    var lstReplace = lstLetters.replace(/\,/g,''); 
    } 

con la etiqueta de entrada aquí:

<input type="text" onblur="checkNumeric(this);" name="nocomma" size="10" maxlength="10"/> 
+0

Preferiría manejar esto en el servidor; porque podría mostrar al usuario que manipulaste su valor – Jake

2

Simplemente reemplace todas las comas con un espacio en blanco.

Usted puede seguir este: http://blog.techsaints.com/2007/06/25/javascript-how-to-remove-all-commas-from-a-number/

+0

Encontré ese artículo antes, pero estaba confundido acerca de dónde provenía el elemento FormValue. –

+1

con una cadena vacía ("un espacio en blanco" podría interpretarse como "un espacio") – Anonymous

+0

FormNumber debe ser StartNumber en el enlace que he mencionado, aparece. –

23

Una manera rápida y sucia es utilizar el método String.replace():

var rawstring = '1,200,000'; 
var cleanstring = rawstring.replace(/[^\d\.\-\ ]/g, ''); 

Esto establecerá cleanstring a: 1200000. Suponiendo que está utilizando el formato de los Estados Unidos, entonces se producirán las siguientes conversiones:

1234 --> 1234 
1,234 --> 1234 
-1234 --> -1234 
-1,234 --> -1234 
1234.5 --> 1234.5 
1,234.5 --> 1234.5 
-1,234.5 --> -1234.5 
1xxx234 --> 1234 

Si se encuentra en otros lugares que invierten el '' y ',', entonces tendrá que hacer ese cambio en la expresión regular.

2

Convierte coma cadena de número delimitado en un número de tipo (también conocido como la conversión de tipos)

+"1,234".split(',').join('') // outputs 1234 

Desglose:

+    - math operation which casts the type of the outcome into type Number 
"1,234"  - Our string, which represents a comma delimited number 
.split(',') - split the string into an Array: ["1", "234"], between every "," character 
.join('')  - joins the Array back, without any delimiter: "1234" 

y una función simple sería:

function stringToNumber(s){ 
    return +s.split(',').join(''); 
} 
+1

Nada acerca de tu respuesta real, lo que es genial, realmente aprecio el esfuerzo adicional que pusiste en tu sección "Desglose". Desearía que más personas hicieran eso aquí. ¡Gracias! –

Cuestiones relacionadas