Domino 9 und frühere Versionen > ND6: Entwicklung
Java Sript Multiplikation mit z. B. 1.45"
entertainer1105:
Es handelt sich um ein Zahlenfeld. Ich habe mir gespeicherte Dokumente angeschaut und dort werden im Eigenschaftsfenster auch Zahlen angezeigt.
Im Augenblick habe ich noch zwei Probleme:
Da ich in der Original-Datenbank mit Profildokumenten arbeite muß ich dort in einem Zahlenfeld z. B. 1,45 eingeben. Da ich einen deutschen Client habe muß ich ein den Wert mit einem Komma eingeben. Das mag dann natürlich mein JavaScript nicht mehr.
Zweitens: wenn ich das JavaScript z. B. mit einem Multiplikator von 1.45 (feste Eingabe) ausführe und "88" eingebe, so rechnet er zwar den Wert richtig aus, jedoch gibt der Client eine Fehlermeldung heraus "nicht erkannte Zeichen hinter Zahl" und speichert nicht und im Web bekomme ich den Fehler "HTTP interner Server Fehler" und es wird ebenfalls nicht abgespeichert.
Beides wird sicher mit dem "Komma" zu tun haben.
Wie kann man das Format vereinheitlichen, daß er nur noch das "."-Format benutzt??
So langsam bin ich ratlos.....
animate:
ich vermute, dass
- Javascript erst nichts mit dem Komma, das aus Notes kommt anfangen kann
- Notes nichts mit dem Punkt, der von der Operation in Javascript zurückkommt anfangen kann
Du hast zwei Möglichkeiten wenn meine Vermutung richtig ist:
- du veränderst das Feld in Notes so, dass es statt Komma Punkt als Dezimaltrennzeichen nimmt.
- du machst eine spezielle JS-Funktion, die den Input aus Notes verändert (Komma durch Punkt ersetzen mit replace()), die Berechnung durchführt und das Ergebnis verändert (Punkt ducrh Komma ersetzen)
Marinero Atlántico:
--- Zitat von: Thomas Völk am 21.04.05 - 09:38:05 ---ich vermute, dass
--- Ende Zitat ---
yup. so sehe ich das auch.
Die Formatkonvertierung würde ich in Javascript durchführen.
Hier ist ein Beispiel für die entsprechende Funktion:
http://de.selfhtml.org/javascript/objekte/string.htm#replace
Glombi:
Man muss es wohl zwingend in JavaScript machen, da Notes Zahlen immer in der gleichen Darstellung speichert, unabhängig davon was man unter benutzerdefiniert als Dezimaltrenner eingegeben hat. Denn das ist nur für die Anzeige.
Die JS Funktion replace setzt einen String voraus, d.h. die "Zahl" müsste erst in einen String konvertiert werden.
Da stellt sich die Frage, ob man nicht in Notes gleich ein Textfeld verwendet.
Andreas
Marinero Atlántico:
--- Zitat von: Glombi am 21.04.05 - 10:26:11 ---Da stellt sich die Frage, ob man nicht in Notes gleich ein Textfeld verwendet.
--- Ende Zitat ---
Wieso?
--- Code: ---if (document.forms[0].Lamph.value > 0)
{
if (document.forms[0].Waehrung.value == "GBP")
{
alert ("Wir sind in GB") ;
// Der Wert Lamph wird vom Benutzer eingegeben, der localFactor wird aus einem Profildokument ausgelesen.
// In diesem Wert steht z. Zt. die 1,45
// Wenn der Wert "localFactor" einen ganzzahligen Wert hat, wird alles richtig ausgerechnet und auch gespeichert
valUS = document.forms[0].Lamph.value * formatUS(document.forms[0].localFactor.value) ;
document.forms[0].EurLamph.value = formatGerman(valUS);
}
function String formatUS(String input) {
return input.replace(/,/, ".");
}
function String formatGerman(String input) {
return input.replace(/./, ",");
}
--- Ende Code ---
nicht getestet.
Ich würd die Funktionen formatUS und formatGerman nicht zu einer Funktion verdichten (was möglich wäre), da dies vermutlich unübersichtlich ist. formatUS und formatGerman sind klare Namen.
Besser vielleicht noch formatDecimalSeperatorUS und formatDecimalSeperatorGerman.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln