Ingo: Eingabefelder miteinander verrechnen

Hallo Leute,

ich habe ein Fomular gebaut in HTML und die Eingabefelder sollen zusammengerechnet werden! Doch leider kommt nix sinnvolles raus! Er hängt die Zahlen nur zusammen! (z.B.  234 + 189 = 234198 ) Das is kacke!

An sich eine einfache Geschichte! Nicht alles so genau mit dem Quelltext nehmen, denn das hier ist nur ein Ausschnitt aus dem Dokument!

<form action="(EmptyReference!)" method="get" name="Fahrzeugabrechnung">

<input type="text" name="Feld1" value="0.00" size="18" tabindex="9" border="0" OnBlur="addGesamtfahrzeugpreis()">
<input type="text" name="Feld2" value="0.00" size="18" tabindex="9" border="0" OnBlur="addGesamtfahrzeugpreis()">
<input type="text" name="FeldErgebnis" value="0.00" size="18" tabindex="9" border="0" >

<script language="JavaScript">
function addGesamtfahrzeugpreis()
{
document.Fahrzeugabrechnung.FeldErgebnis.value = document.Fahrzeugabrechnung.Feld1.value + document.Fahrzeugabrechnung.Feld2.value ;
              }
    </script>
</form>

Danke

Ingo

  1. Hi,

    die Values der Eingabefelder werden als Strings behandelt, daher hängt er sie auch wie Strings zusammen. Verwende mal parseInt(); dann sollte
    es funktionieren.

    document.Fahrzeugabrechnung.FeldErgebnis.value = parseInt(document.Fahrzeugabrechnung.Feld1.value) + parseInt(document.Fahrzeugabrechnung.Feld2.value);

    mfg
    Knusperklumpen

  2. Tach,

    ich habe ein Fomular gebaut in HTML und die Eingabefelder sollen zusammengerechnet werden! Doch leider kommt nix sinnvolles raus! Er hängt die Zahlen nur zusammen! (z.B.  234 + 189 = 234198 ) Das is kacke!

    der value eines input-Elements ist ein String, also wird auch die String-funktion + verwendet.

    An sich eine einfache Geschichte!

    Deshalb steht sie auch schon hunderte von Malen im Archiv.

    mfg
    Woodfighter

  3. hi,

    ich habe ein Fomular gebaut in HTML und die Eingabefelder sollen zusammengerechnet werden! Doch leider kommt nix sinnvolles raus! Er hängt die Zahlen nur zusammen! (z.B.  234 + 189 = 234198 ) Das is kacke!

    Nein, das ist Unwissenheit deinerseits - die ist aber kein Grund, sich solch einen Tonfalles zu befleißigen.

    Werte, die du aus dem value-Attribut von Formularfeldern ausliest, sind in Javascript _immer_ Strings - und da + der Operator zur Stringverkekktung ist, bekommst du damit natürlich hintereinandergehängte Strings.

    Wandle also die ausgelesenen Formularfeldinhalte erst mal in Zahlen um, bevor du mit ihnen rechnest (parseFloat() oder parseInt()).

    Und gewöhne dir bitte mal an, Interpunktion sinnvoll einzusetzen - hinter jeden Satz ein Ausrufzeichen setzen, dass machen eigentlich höchstens Kinder, die befürchten nicht genug Aufmerksamkeit zu bekommen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Also gut! Meinetwegen stand des schon oft hier! Aber trotzdem kannst du wahsaga dein Maul halten!
      Sowas ist bei mir ein schlechter Tonfall!
      Sich aber wegen meiner Art sich aufzuregen, weil ich sage das is Kacke! Echt lachhaft!

      Trotzdem Danke!!!! Und ich schreibe weiterhin soviele !!! wie ich will!!

      DANKE!!.

      ________________________________________

      Danke an alle anderen, die auch gepostet haben. Vielen Dank für eure freundliche Hilfe.

      Ingo

      1. Tach,

        Trotzdem Danke!!!! Und ich schreibe weiterhin soviele !!! wie ich will!!
        Danke an alle anderen, die auch gepostet haben. Vielen Dank für eure freundliche Hilfe.

        wenn du so weiterschreibst, bekommst du zumindestens von mir in Zukunft keine Hilfe mehr, also denke darüber nach.

        mfg
        Woodfighter

        1. Ich hätte da auch noch eine kleine Frage!
          Ich muss ja parseFloat nutzen und dort funktioniert leider nur der ".". Aber es funktioniert nicht! Und diesmal habe ich schon im Forum danach gesucht!!

          also hab ich folgendes gemacht:

          <input type="text" name="Feld1" value="0" size="18" tabindex="9" border="0" OnBlur="kommainpunkt(this)">

          <script language="JavaScript">
          {

          function kommainpunkt(feld)
          {
          str=feld.value;
          ok=true;
          i=0;
          lng = str.length;
          while ( (ok == true) && (i<=lng) )
            {
            if ( str.charAt(i) == "," )
             {
             str.charAt(i)=".";
             ok = false;
             }
            i=i+1;
            }
          feld.value=str;
          }

          </script>

          1. Tach,

            Ich hätte da auch noch eine kleine Frage!

            hast du gelesen, was ich geschrieben habe? Dann weißt du ja, was du tun solltest um noch einmal eine Antwort zu erhalten.

            Wir helfen dir hier freiwillig. Wenn du Hilfe willst stellen wir hier die Regeln auf, an die du dich halten solltest, ansonsten gibt es einfach keine Hilfe.

            mfg
            Woodfighter

            1. Ach welche Regel habe ich den jetzt grade mit dem Posting gebrochen?
              Eben das war reine Selbstverteidigung und jetzt rede ich doch normal mit dir?

              Komm bitte hilf mir?! Danke!

              Ingo

              1. Hallo Ingo,

                Ach welche Regel habe ich den jetzt grade mit dem Posting gebrochen?

                In diesem Posting hat Jens folgendes geschrieben:

                der value eines input-Elements ist ein String, also wird auch die String-funktion + verwendet.
                Deshalb steht sie auch schon hunderte von Malen im Archiv.

                Such dir etwas aus.

                Grüsse
                Siramon,
                     ja der Penner aus Nr. 14

              2. Tach,

                Ach welche Regel habe ich den jetzt grade mit dem Posting gebrochen?

                die Sache mit den multiplen Satzzeichen und eine Entschuldigung an wahsaga habe ich auch noch nicht gesehen.

                Komm bitte hilf mir?! Danke!

                Du kennst den korrekten Imperativ von helfen, bist aber nicht in der Lage Satzzeichen vernünftig zu setzen?

                mfg
                Woodfighter

          2. Hi,
            geht es dir darum das "," durch "." zu ersetzen?
            Dann schau mal bei replace http://de.selfhtml.org/javascript/objekte/string.htm#replace

            mfg
            Knusperklumpen

      2. Hallo Herr Müller,

        Also gut!

        Schön Sie sehen Ihren Fehler ein.

        Meinetwegen stand des schon oft hier!

        Ja da haben Sie recht und eine Suche im Archiv hätte Sie sehr wahrscheinlich weitergebracht.

        Aber trotzdem kannst du wahsaga dein Maul halten!

        Das gehört in die Kategorie Nettigkeiten, habe Sie das nötig Herr Müller?

        Sowas ist bei mir ein schlechter Tonfall!

        Ich stimme in diesem Punkt mit Ihnen überein Herr Müller, die letzte Aussage von Ihnen war wirklich ein schlechter Tonfall(sic!).

        Sich aber wegen meiner Art sich aufzuregen, weil ich sage das is Kacke! Echt lachhaft!

        Es ist meistens schwierig nur aufgrund der Schreibe den wirklichen Gemütszustand eines Schreiberlings zu erkennen. Bei Ihnen war wohl das Reizwort "Kacke", sowie die diversen Ausrufezeichen relevant für Herrn wahsagas Interpretation - ich habe es übrigens in etwa ähnlich aufgefasst.

        Trotzdem Danke!!!! Und ich schreibe weiterhin soviele !!! wie ich will!!

        Schön, dass wir Ihnen helfen konnten. Und über die Ausrufezeichen sehen wir grosszügig hinweg, achten Sie aber bitte auf Ihren rechten kleinen Finger, zu viele schnelle Bewegungen an den rechten oberen Tastaturrand kann Zerrungserscheinungen hervorrufen.

        DANKE!!.

        Gern geschen Herr Müller, beehren Sie uns bitte bald wieder.

        Hochachtungsvoll
        Rolf Sonderegger

        ----
        Hallo Ingo,

        ________________________________________
        Danke an alle anderen, die auch gepostet haben. Vielen Dank für eure freundliche Hilfe.

        Ein Danke für eine Hilfeleistung wird immer gern gesehen und du siehst, es geht ja auch in einem freundlichen Ton.

        Vielen Dank!

        Grüsse
        Siramon,
             ja der Penner aus Nr. 14

  4. Hi,

    ich habe ein Fomular gebaut in HTML und die Eingabefelder sollen zusammengerechnet werden! Doch leider kommt nix sinnvolles raus! Er hängt die Zahlen nur zusammen! (z.B.  234 + 189 = 234198 ) Das is kacke!

    Achm, wer wird denn gleich die Flinte in's Korn werfen? Sowas ist außerdem umweltschädigend wenn es Blei- statt Eisenschrot ist!

    An sich eine einfache Geschichte!

    ... sagte Eva zu Adam.

    Was Du im Detail falsch gemacht hast, solltest Du ja mittlerweile in Erfahrung gebracht haben. Es gibt aber noch mehr zu beachten, wenn der User Eingaben tätigt: sie sind alle, ohne Ausnahme auf Gültigkeit zu überprüfen! Bei Javascript hilft das zwar nicht gegen absichtliche Änderungen, aber unabsichtliche gibt es auch schon genug. Wenn Du, wie hier Zahlen erwartest, dann mußt Du nachschauen, ob es reguläre Zahlen sind und möchtest sie auch noch gegebenfalls nachbearbeiten wenn möglich.
    Das Format einer handelsüblichen Zahl besteht aus Ziffern, Kommas, Leerzeichen und Punkten -- wir beschränken uns im Zeichensatz einmal auf ASCII.
    123456789,99        # u.a. deutsch
    123 456 789,999 123 # u.a. deutsch nach DIN (5008) und ISO
    123456789.99        # u.a. angelsächsisch
    123.456.789,99      # u.a. angelsächsisch
    123,456,789.99      # u.a. deutsch
    123'456'789,99      # u.a. schweizerisch
    Ableitbare Regel: eine Zahl besteht aus Ziffern in beliebiger Menge und kann Tausendertrennzeichen beinhalten. Die T.-Trennzeichen sind vom Komma verschieden und das Komma ist nur einmal vorhanden.

    Na denn: viel Vergnügen mit dem ausbaldowern des Regex'!

    so short

    Christoph Zurnieden

    PS:
    Die forumsübliche Waffe für Duelle ist das Florett, mitunter auch der schwere Degen -- ja, manch' ein Hauptspeicher wurde auch schon mit dem großem zweihändigem Doppelkopf umprogrammiert! -- aber mit einer dicken und vielleicht sogar noch schmutzigen Keule? Nein, wie ordinär!
    CZ