Textfeld
Matthias
- html
Hallo an alle,
für einige hier ist das bestimmt ein einfaches Problem! aber ich weiß leider nicht wie ich das lösen soll!
Ich habe ein Textfeld erstellt!
<input type="text" name="T1" size="20">
wie kann ich dem textfelkd nun sagen, das wenn ich eine zahl eingebe (z.B. 243,587645) das er dann automatisch 243,59 daraus macht? geht das und wenn ja wie muss ich meinen code ändern?
vielen dank im Vorraus!
sollte das in HTML nicht möglich sein würde ich mich auch über andere vorschläge sehr freuen!
MfG Matthias
Teste den folgenden HTML-Kode (beachte, dass nicht das Komma, sondern der Punkt das internationale Dezimaltrennzeichen ist):
<HTML>
<HEAD>
<TITLE>Runden</TITLE>
<SCRIPT TYPE="text/javascript"><!--
function uebertrage()
{
var vEingabe, vKomma;
vEingabe = f1.tEingabe.value;
vKomma = vEingabe.indexOf(",");
if (vKomma > -1)
vEingabe = vEingabe.slice(0, vKomma) + "." + vEingabe.slice(vKomma+1, vEingabe.length);
f1.tAusgabe.value = Math.round(vEingabe*100)/100;
}
//--></SCRIPT>
</HEAD>
<BODY BGCOLOR="#FFFFCC">
<CENTER>
<P><FORM ACTION="" METHOD=POST name=f1>
<CENTER><INPUT TYPE=text NAME=tEingabe VALUE="243,587645" SIZE=50 MAXLENGTH=50>
<P><INPUT TYPE=button NAME=bUebertrage VALUE="Übertrage" onclick="uebertrage()"></P>
<P><INPUT TYPE=text NAME=tAusgabe VALUE="" SIZE=50 MAXLENGTH=50></P></CENTER>
<P>
</FORM></P></CENTER>
<P></P>
</BODY>
</HTML>
Hallo Ullrich
[...](beachte, dass nicht das Komma, sondern der Punkt das internationale Dezimaltrennzeichen ist):
Laut ISO 31-0 ist das internationale Dezimalzeichen das Komma (,) und nicht der Punkt. Der Punkt ist halt in englischsprachigen Ländern das vorherrschende Dezimaltrennzeichen und aufgrund der Vorherrschaft des Englischen als Weltsprache wird der Punkt (.) oft als international gültig empfunden.
Servus
Hallo flowh.
Der Punkt ist halt in englischsprachigen Ländern das vorherrschende Dezimaltrennzeichen und aufgrund der Vorherrschaft des Englischen als Weltsprache wird der Punkt (.) oft als international gültig empfunden.
Wenn das der Fall sein sollte bedanke ich mich für diese Information.
Einen schönen Samstag noch.
Gruß, Ashura
Hi,
[...](beachte, dass nicht das Komma, sondern der Punkt das internationale Dezimaltrennzeichen ist):
Schade, dass JavaScript-Funktionen (z.B. eval() ) das nicht beachten!
Danke für den Hinweis!
Ulrich.
Hallo flowh,
[...](beachte, dass nicht das Komma, sondern der Punkt das internationale Dezimaltrennzeichen ist):
Laut ISO 31-0 ist das internationale Dezimalzeichen das Komma (,) und nicht der Punkt. Der Punkt ist halt in englischsprachigen Ländern das vorherrschende Dezimaltrennzeichen und aufgrund der Vorherrschaft des Englischen als Weltsprache wird der Punkt (.) oft als international gültig empfunden.
Das war mir auch neu, aber du hast Recht; selbst die englischsprachige Wikipedia räumt das ein.
http://en.wikipedia.org/wiki/Decimal_separator
Man hat es ja gerne schwarz auf weiß, aber 16 Schweizer Franken wollte ich dafür nicht bezahlen:
Gruß Gernot
Hallo Gernot!
Das war mir auch neu, aber du hast Recht; selbst die englischsprachige Wikipedia räumt das ein.
Ich habe die Info von http://en.wikipedia.org/wiki/ISO_31-0.. Wikipedia bietet den Inhalt von ein paar ISOs (stark) zusammengefasst an.
Man hat es ja gerne schwarz auf weiß, aber 16 Schweizer Franken wollte ich dafür nicht bezahlen:
[link:http://tinyurl.com/8699r@title=https://store.iso.org/isost
Bei den Gebühren könnten "die" doch eigentlich alles in die ISOs rein schreiben, es schaut sich ja eh keiner an... =)
Servus
Hallo Matthias.
wie kann ich dem textfelkd nun sagen, das wenn ich eine zahl eingebe (z.B. 243,587645) das er dann automatisch 243,59 daraus macht? geht das und wenn ja wie muss ich meinen code ändern?
Das Bedarf etwas Arbeit, ist aber machbar.
Als erstes verpasst du dem input-Element den Eventhandler http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onblur@title=onblur, welcher aktiviert wird, wenn du dem Textfeld den Fokus entziehst. (Also mit Tab zum nächsten springst, oder aber mit der Maus irgend wohin klickst.)
In diesem Eventhandler notierst du eine von dir <http://de.selfhtml.org/javascript/sprache/funktionen.htm#definieren@title=selbst geschrieben Funktion>, deren Inhalt ich noch erläutern werde. Als Parameter übergibst du http://de.selfhtml.org/javascript/sprache/objekte.htm#this@title=this, also das aktuell ausgewählte Objekt, in diesem Falle also das input-Elementes.
Den übergebenen http://de.selfhtml.org/javascript/objekte/elements.htm#value@title=Wert würde ich zuallererst in einer http://de.selfhtml.org/javascript/sprache/variablen.htm#definieren@title=Variable zum arbeiten ablegen.
In deiner Funktion musst du nun als erstes das Komma in besagter Variable durch den Punkt http://de.selfhtml.org/javascript/objekte/string.htm#replace@title=ersetzen. JavaScript orientiert sich an internationalen Festlegungen. Und dort ist der Dezimaltrenner nun einmal der Punkt und das Tausenderzeichen das Komma.
Als nächstes musst du den Wert <http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_float@title=in eine Fließkommazahl umwandeln>. (Zuvor ist der Wert lediglich eine Zeichenkette, womit keine mathematischen Operationen durchgeführt werden können.)
Nun legst du die http://de.selfhtml.org/javascript/objekte/number.htm#to_precision@title=Genauigkeit der Zahl fest, in diesem Falle 4.
Zu guter letzt ersetzt du nun den Wert des übergebenen Objekts (mittels this also des input-Elementes) per einfache Wertzuweisung durch das Endergebnis, welches sich in der Variable befindet.
Einen schönen Samstag noch.
Gruß, Ashura
Hallo.
Zu guter letzt ersetzt du nun den Wert des übergebenen Objekts (mittels this also des input-Elementes) per einfache Wertzuweisung durch das Endergebnis, welches sich in der Variable befindet.
Ich habe etwas vergessen: vor diesem Schritt musst du natürlich den Punkt auf bekannte Art und Weise wieder durch ein Komma ersetzen.
Tätest du dies nicht, würde aus „12,119“ der Wert „12.12“ und nicht, wie gewünscht „12,12“.
Einen schönen Samstag noch.
Gruß, Ashura
Hallo.
In deiner Funktion musst du nun als erstes das Komma in besagter Variable durch den Punkt http://de.selfhtml.org/javascript/objekte/string.htm#replace@title=ersetzen.
Hiervor sollte, um die Flexibilität zu wahren, noch ermittelt werden, an welcher Stelle das erste Komma auftritt und dies in einer weiteren Variable abgelegt werden.
Nun legst du die http://de.selfhtml.org/javascript/objekte/number.htm#to_precision@title=Genauigkeit der Zahl fest, in diesem Falle 4.
Mit obiger Ergänzung sollte hier nun also obige Variable um zwei vermehrt werden. Diese stellen damit unabhängig von der Anzahl der Ziffern vor dem Komma die fixe Anzahl der Nachkommastellen dar.
Einen schönen Samstag noch.
Gruß, Ashura
Hallo,
Mit obiger Ergänzung sollte hier nun also obige Variable um zwei vermehrt werden. Diese stellen damit unabhängig von der Anzahl der Ziffern vor dem Komma die fixe Anzahl der Nachkommastellen dar.
Was hast Du gegen [http://de.selfhtml.org/javascript/objekte/number.htm#to_fixed@title=toFixed(2)]? Damit wären die von Dir beschriebenen Aufwendungen mit der Variablen nicht nötig.
viele Grüße
Axel
Hallo Axel.
Was hast Du gegen toFixed(2)? Damit wären die von Dir beschriebenen Aufwendungen mit der Variablen nicht nötig.
Ohja, das vereinfacht das Ganze. Danke.
Einen schönen Samstag noch.
Gruß, Ashura
Hallo,
wie kann ich dem textfelkd nun sagen, das wenn ich eine zahl eingebe (z.B. 243,587645) das er dann automatisch 243,59 daraus macht? geht das und wenn ja wie muss ich meinen code ändern?
kommt drauf an wann du es ggf. korrigieren möchtest. Prinzipiell kannst
du per onChange die Eingabe auslesen, ggf. in eine Zahl umwandeln, und
dann z.B. per toFixed runden.
Grüsse
Cyx23