2009-05-07 7 views
27

J'ai une fonction javascript qui accepte un nombre et effectue une opération mathématique sur le nombre. Cependant, le nombre que je passe peut contenir une virgule, et d'après mon expérience limitée avec Javascript, j'ai de la difficulté à travailler avec cette valeur. Cela ne semble pas traiter cela comme un type numérique.Numéros avec des virgules en Javascript

Quelle est la manière la plus simple de prendre un paramètre avec une valeur de 1 000 et de le convertir en un nombre 1000?

+11

@Mike C.-s Certaines personnes vont juste attaquer des questions qu'ils ne comprennent pas, je ne sais pas pourquoi, ils font juste – TStamper

+0

Il semble contre-productif à tout. J'aurais aimé que ça montre un compte rendu de qui a refusé, mais je suppose que cela ne ferait que susciter du ressentiment. –

Répondre

35

Vous pouvez configurer votre zone de texte pour avoir un onblur() fonction donc lorsque l'utilisateur tente de quitter la zone de texte, vous supprimez alors les virgules de la valeur à l'aide le javascript remplacer fonction

exemple:

function checkNumeric(objName) 
    { 
    var lstLetters = objName; 

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

avec l'étiquette d'entrée ici:

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

Je préfère gérer cela du côté serveur; Parce qu'il pourrait montrer à l'utilisateur que vous avez manipulé leur valeur – Jake

23

Un moyen rapide et sale est d'utiliser la méthode String.replace():

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

Cela mis cleanstring à: 1200000. En supposant que vous utilisez le formatage des États-Unis, puis les conversions suivantes se produiront:

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 vous êtes dans d'autres endroits qui inversent le « » et ',', alors vous devrez faire ce changement dans l'expression rationnelle.

2

Convertis chaîne de nombre délimité par des virgules dans un numéro de type (alias type de coulée)

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

Répartition:

+    - 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" 

Et une fonction simple serait:

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

Rien sur votre réponse réelle - ce qui est génial - J'apprécie vraiment l'effort supplémentaire que vous avez mis dans votre section "Breakdown". J'aimerais que plus de gens fassent ça ici. Je vous remercie! –

Questions connexes