Ergebnis 1 bis 7 von 7
  1. #1
    Avatar von gessi2000
    gessi2000 ist offline Eroberer
    registriert
    02-04-2003
    Beiträge
    66

    Question Brauche Funktion die für Math Object "." löscht und "," zu "." macht

    Brauche eine Funktion, die bei einer Benutzereingabe in ein Formulartextfeld (z.B. 15.000,63) den Punkt löscht und das Komma zu einem Punkt macht um mit der Math Funktion rechnen zu können.
    Wenn natürlich richtig eingegeben wird (15000.63) soll logischerweise dieser Wert übergeben werden...
    Wie bringe ich das am Besten hin wenn mehrere Rechenfunktionen (z.B. Zinssatz berechnen, Endwert berechnen, Anfangswert berechnen etc. ) ausgeführt werden sollen können?

  2. #2
    Bjoern ist offline Haudegen
    registriert
    05-04-2002
    Ort
    Berlin
    Beiträge
    507
    Beispiel für das ersetzen:
    zahl="5485,343,343";
    zahl=parseFloat(zahl.replace(/,/gi,'.'));

    Da kommt eine Fließkommazahl raus.
    (die vielen Kommans wurden nur zu Demonstrationszwecken gesetzt)

  3. #3
    Avatar von .marc
    .marc ist offline Lebende Foren-Legende
    registriert
    26-12-2002
    Ort
    Schweiz / Biel
    Beiträge
    1.589
    hier ein einfaches Beispiel eventuell musst du noch mit indexOf() schauen das nicht das falsch ersetzt wird
    Code:
    <html>
    <head>
    <script type="text/javascript">
    function umwandlen(f,e)
    {
    wert=document.forms[f].elements[e].value.replace(/\./,"");
    wert=wert.replace(/,/,".");
    alert(wert);
    }
    </script>
    </head>
    <body>
    <form>
    <input type="text">
    <input type="button" onClick="umwandlen(0,0)" value="umwandlen">
    </form>
    </body>
    </html>
    [edit /]da war ich ja zu langsam
    Shit doesn't happen, it's produced by an asshole.
    brain-dump.org || Marc Tanner's web log

  4. #4
    Avatar von gessi2000
    gessi2000 ist offline Eroberer
    registriert
    02-04-2003
    Beiträge
    66
    @Bjoern
    Was bedeutet das "gi" und wie kann ich sicherstellen ,dass auch nur bis auf das letzte Komma (falls eine Fließkommazahl verwendet werden soll) die Punkte gelöscht werden und das Komma dann in einen Punkt verwandelt wird?
    und vor allem was mache ich wenn jemand eine längere Zahl eingeben will, z.B. 1.000.000,50?

  5. #5
    Avatar von womstar
    womstar ist offline Lounge-Member
    registriert
    22-07-2002
    Ort
    latente matrix
    Beiträge
    5.913
    @gessi2000

    g = globale suche
    i = ignorie bei deiner suche groß und klein schreibung

    gi ist demnach ein such parameter auch flag genannt der aus g und i besteht.

    durch g stellst du sicher das auch der ganze string durch sucht wird.

    http://forum.jswelt.de/showthread.ph...hlight=replace (replaceIt)

  6. #6
    Avatar von gessi2000
    gessi2000 ist offline Eroberer
    registriert
    02-04-2003
    Beiträge
    66
    Nur, das ich als Ergebnis bei der Zahl "5485,343,343" in JS "5485.343 rausbekomme...
    Das ist aber eigentlich nicht das was ich will.
    Ich brauche ja die komplette Zahl.
    Nur die Formatierung soll angepaßt werden.
    Kann ich irgendwie mit der Eigenschaft length die Länge (=Anzahl) der eingegebenen Zeichen im Formularfeld herausbekommen und dann erstmal überprüfen, ob an der 3. Stelle von rechts ein Komma steht (z.B. 100.000,00) oder ein Punkt (100000.00), der Punkt soll bleiben und das Komma in einen Punkt verwandelt werden, damit JS damit rechnen kann?
    Dann sollen alle weiteren Punkte (falls eingeben) links von dieser Stelle gelöscht werden.
    Ich glaube kaum, dass die Benutzer meines Rechenformulars 544.50 statt 544,50 eingeben werden.
    Ich hoffe, Ihr wisst um was es mir geht!

  7. #7
    Avatar von gessi2000
    gessi2000 ist offline Eroberer
    registriert
    02-04-2003
    Beiträge
    66
    Hab eine Funktion gefunden!
    Vielleicht kann sie mal jemand brauchen:
    function InZahl (Wert)
    /* Wandelt das deutsche Zahlensystem in das amerikanische Zahlensystem um.
    Nur so kann in Javascript gerechnet werden!*/

    { // Die beiden Variablen beschreiben die Stellen des "," und des "." in der übergebenen Zahl
    var PosPunkt = Wert.indexOf(".",0);
    var PosKomma = Wert.indexOf(",",0);
    if (PosKomma < 0) PosKomma = Wert.length;

    // Dezimalpunkte zur Tausendergruppierung entfernen
    while ((0 <= PosPunkt) && (PosPunkt < PosKomma))
    {
    Wert = Wert.substring(0, PosPunkt) + Wert.substring(PosPunkt + 1, Wert.length);
    PosPunkt = Wert.indexOf(".",0);
    PosKomma--;
    }

    // Enthaelt die Variable 'Wert' ein Komma ?
    PosKomma = Wert.indexOf(",",0);
    if (PosKomma >= 0)
    { Wert = Wert.substring(0, PosKomma) + "." + Wert.substring(PosKomma + 1, Wert.length); }

    return parseFloat(Wert);
    }

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •