2017-03-17 7 views
1

auf einige Javascript Arbeiten ich geerbt und dieses nicht herausfinden können,:ReplaceAll in Javascript kehrt die falsche Nummer

fa = parseFloat(replaceAll($("#face_amount").val(),',','')) 

Wenn face_amount ist 999.999 (oder eine beliebige Zahl mit einem Komma) fa = 999999 aber wenn face_amount ist 1.000.000 fa = 1000

face_amount benötigt die Formatierung Kommas für Anzeigezwecke.

Ich bin sehr neu zu Javascript, so würde jede Hilfe sehr geschätzt werden.

+3

Wir müssen Ihre 'replaceAll' Funktion sehen. – Adam

+0

Danke für alle Antworten! Ich bin so ein Noob, dass ich nicht erkannte, dass 'replaceAll' keine JavaScript-Funktion war, sondern eine benutzerdefinierte Funktion. – user3850146

Antwort

1

Ohne zu wissen, was replaceAll tut, kann ich diese Codezeile nicht wirklich reparieren, aber Sie könnten stattdessen eine andere Ersetzungsfunktion verwenden.

fa = parseFloat($("#face_amount").val().replace(/,/g,'')) // This works, returns 1000000 

Ich vermute, dass das Problem ist, dass Ihre replaceAll Funktion nicht Kommas global entsprechen. Die folgende Codezeile findet nur das erste Komma und stoppt dort. Wo die Codezeile alle Kommas mit einem globalen regulären Ausdruck findet.

fa = parseFloat($("#face_amount").val().replace(',','')) // This doesn't work, returns 1000 
0

Wenn Ihr Ziel nicht numerische oder . Werte zu beseitigen ist, können Sie eine einfache regex, bevor Sie parseFloat benutzen.

var floater = parseFloat($("#face_amount").val().replace(/[^\d\.]+/g, '')) 
+0

Sie können '\ D' verwenden, um alle nicht-stelligen Zeichen anstelle von' [^ \ d] ' – Adam

+0

zu finden Das ist' parseInt() ', das eine Radix hat,' parseFloat() 'hat keins. – zer00ne

+0

@ zer00ne derp! Vielen Dank, aktualisierte meine Antwort. –

0

Werke für mich, aber ich eingeschlossen meine replaceAll in der Code:

function replaceAll(str,from,to){ 
 
    var re = new RegExp(from,"g"); 
 
    return str.replace(re,to); 
 
} 
 

 

 
var face_amount = '999,999'; 
 
var fa = parseFloat(replaceAll(face_amount,',','')); 
 
console.log(face_amount,': ',fa); 
 

 
face_amount = '1,000,000'; 
 
fa = parseFloat(replaceAll(face_amount,',','')); 
 
console.log(face_amount,': ',fa);