Axel Hoogestraat: Flexible Wärungseingabe

Beitrag lesen

Hi,

vielen Dank Gunnar. Das war genau der richtige Tip. Ich habe jetzt folgende Funktion daraus gebaastelt

function convertCurrency(value) {
 // Zeichen , und . gleichsetzen
 value = value.replace(/,/, ".");
 // Letztes Vorkommen von "."
 last = value.lastIndexOf(".");
 // Teilstrings ermitteln
 bgnStr = value.substring(0, last);
 endStr = value.substring(last+1, value.length);
 // Alle Trenn- oder Dezimalzeichen vor dem letzten entfernen
 bgnStr = bgnStr.replace(/./, "");

// Prüfen der Ziffern-Anzahl nach letztem Trennzeichen
 switch(endStr.length) {
  case 0: // Keine Nachkommastellen -> Ganzahl zurückgeben
   return bgnStr;
   break;
  case 1: // Eine Nachkommastelle -> Mit 0 auffüllen und zurückgeben
   return bgnStr+"."+endStr+"0";
   break;
  case 2: // Zwei Nachkommastellen -> Zurückgeben
   return bgnStr+"."+endStr;
   break;
  case 3: // Drei 'Nachkommastellen' -> Tausendertrennzeichen -> ohne zurückgeben
   return bgnStr+endStr;
   break;
  default:  // Mehr als Drei 'Nachkommastellen' -> Tausendertrennzeichen -> ohne zurückgeben
   return bgnStr+endStr;
   break;
 }
}

Kleine Änderungen zu Deinem Hinweis:
  1 Nachkommastelle nicht ungültig,sondern wird aufgefüllt
  mehr als 3 auch nicht ungültig, sondern wird wie Tausendertrennzeichen gewertet und abgeschnitten.

Vielleicht ist die Funktion ja noch anderen hilfreich, oder es hat noch jemand Verbesserungsvorschläge.

Nochmal vielen Dank
Schöne Grüße
Axel