Matthias: Textfeld

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

  1. 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>&nbsp;

    <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="&Uuml;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>

    1. 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

      --
      flowh
      flo was here .
      1. 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

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        mathbr:del.icio.us/ mathbr:w00t/
      2. 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.

      3. 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:

        https://store.iso.org/isostore/public/basketmini?action=addItem&itemId=000000000000048488-PRAT3&language=en&fromUrl=http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=28988

        Gruß Gernot

        1. Hallo Gernot!

          Das war mir auch neu, aber du hast Recht; selbst die englischsprachige Wikipedia räumt das ein.

          http://en.wikipedia.org/wiki/Decimal_separator

          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

          --
          flowh
          flo was here .
  2. 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

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    mathbr:del.icio.us/ mathbr:w00t/
    1. 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

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      mathbr:del.icio.us/ mathbr:w00t/
    2. 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

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      mathbr:del.icio.us/ mathbr:w00t/
      1. 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

        1. Hallo,

          toFixed(2)

          viele Grüße

          Axel

        2. 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

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          mathbr:del.icio.us/ mathbr:w00t/
  3. 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