2009-05-07 18 views
27

Mam funkcję javascript, która akceptuje liczbę i wykonuje operację matematyczną na numerze. Jednak liczba, którą przechodzę, może zawierać przecinek, a z mojego ograniczonego doświadczenia z JavaScriptem mam problemy z pracą z tą wartością. Nie wydaje się traktować tego jako typ numeryczny.Liczby z przecinkami w JavaScript

Jaki jest najłatwiejszy sposób pobrania parametru o wartości 1000 i przekonwertowania go na numeryczny 1000?

+11

@Mike C.-s ome ludzie chodzą po prostu atakując pytania, których nie rozumieją, nie wiem dlaczego, po prostu robią – TStamper

+0

Wszystko wydaje się kontrproduktywne. Żałuję, że nie pokaże dziennika tego, kto potrącił, ale myślę, że to tylko wzbudziłoby urazę. –

Odpowiedz

35

Można skonfigurować tekstowe mieć onblur() funkcja więc gdy użytkownik próbuje opuścić pole tekstowe, następnie usunąć za pomocą przecinków od wartości javascript wymienić funkcja

przykład:

function checkNumeric(objName) 
    { 
    var lstLetters = objName; 

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

z tagiem tutaj wejściowych:

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

Wolałbym obsłużyć to po stronie serwera; ponieważ może to pokazać użytkownikowi, że zmanipulowałeś ich wartość: – Jake

23

Szybki i brudny sposobem jest użycie string.replace() metoda:

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

Spowoduje to ustawienie cleanstring do: 1200000. Zakładając, że używasz US formatowania, a następnie pojawią się następujące konwersje:

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 

Jeśli jesteś w innych lokalizacjach, które odwracają „” i ",", wtedy będziesz musiał wprowadzić tę zmianę w regex.

2

konwertuje rozdzielany przecinkami liczba łańcuch na liczbę typu (aka typu odlew)

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

Podział:

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

I prostą funkcją byłoby:

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

Nie ma nic o Twojej aktualnej odpowiedzi - co jest wspaniałe - naprawdę doceniam dodatkowy wysiłek wkładany w twoją sekcję "Awaria". Żałuję, że więcej ludzi nie zrobi tego tutaj. Dziękuję Ci! –

Powiązane problemy