Philipp Packheiser: Nach LostFocus -> berechnen

hallo forum,

habe folgendes problem:

in einem formular mit texfeldern gibt es u.a. die textfelder

  • Einzelpreis
  • Anzahl
  • Gesamtpreis

der anwender gibt den einzelpreis und die anzahl ein. danach sollte automatisch (also ohne betätigen einer schaltfläche) der gesamtpreis (einzelpreis*anzahl) errechnet werden.

kann man das irgendwie so lösen, das sobald das textfeld anzahl "verlassen" wird der gesamtpreis berechnet wird!?

habe leider nicht sehr viel ahnung in javascript... :-(

VIELEN DANK FÜR EURE HILFE!!!!!!!

  1. Hi,

    kann man das irgendwie so lösen, das sobald das textfeld anzahl "verlassen" wird der gesamtpreis berechnet wird!?

    das Ereignis (engl.: event) des Fokusverlierens nennt sich "blur".

    habe leider nicht sehr viel ahnung in javascript... :-(

    Das Wichtigste, was man über JavaScript wissen muss, ist: Es kann deaktiviert sein. Daher ist es _niemals_ ein Ersatz für eine serverseitige Technik, sondern immer nur als Ergänzung anzusehen.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. also müsste es ungefähr so gehen!?

      im head teil die funktion.
      und dann mit dem blur ereignis die funktion aufrufen und das ergebnis in das andere textfeld rein?

      wie schreibe ich das ergebnis in ein textfeld?

      den rest bekomme ich schon hin... :-)

      p.s. die anwender haben alle js aktiviert.

      Hi,

      kann man das irgendwie so lösen, das sobald das textfeld anzahl "verlassen" wird der gesamtpreis berechnet wird!?

      das Ereignis (engl.: event) des Fokusverlierens nennt sich "blur".

      habe leider nicht sehr viel ahnung in javascript... :-(

      Das Wichtigste, was man über JavaScript wissen muss, ist: Es kann deaktiviert sein. Daher ist es _niemals_ ein Ersatz für eine serverseitige Technik, sondern immer nur als Ergänzung anzusehen.

      Cheatah

      1. hi,

        bitte verzichte auf unnötige fullquotes, und zitiere stattdessen _sinnvoll_.

        wie schreibe ich das ergebnis in ein textfeld?

        http://de.selfhtml.org/javascript/objekte/elements.htm

        gruß,
        wahsaga

        --
        I'll try being nicer if you'll try being smarter.
        1. sorry wahsaga, fürs falsch zitieren.

          so habe nun das im head:
          <script language="JavaScript" type="text/JavaScript">
          function gesamtpreis() {
          ergebnis == document.aufnahme.anzahl.value * document.aufnahme.einzelpreis.value
          document.aufnahme.gesamtpreis.value == ergebnis
          }
          </script>

          im textfeld steht dann:

          onblur="gesamtpreis()"

          hm... geht nicht so ganz...

          könnt ihr mir da einen tipp geben?

          1. Hi,

            Du solltest Dich vielleicht zunächst ein wenig mit en Grunlagen beschäftigen, insbesondere wie man Befehle voneinander trennt.

            freundliche Grüße
            Ingo

            1. ok... nun bin ich hier angelangt:

              <script language="JavaScript" type="text/JavaScript">
              function gesamtpreis() {
              var ergebnis = document.aufnahme.anzahl.value * document.aufnahme.einzelpreis.value;
              document.aufnahme.gesamtpreis.value = ergebnis;
              }
              </script>

              nun müsste es doch eigentlich gehn????

              1. Hi,

                <script language="JavaScript" type="text/JavaScript">

                der type ist noch immer falsch, auch wenn das i.d.R. hier nichts bedeuten sollte.

                var ergebnis = document.aufnahme.anzahl.value * document.aufnahme.einzelpreis.value;

                Du multiplizierst hier noch immer Strings. Die meisten Browser sollten hier zwar eine automatische Konvertierung vornehmen, verlassen sollte man sich darauf jedoch nicht.

                nun müsste es doch eigentlich gehn????

                Wenn es das nicht tut, benötigen wir Deine Definition von "geht nicht". Tipp: alert() eignet sich gut für Debug-Ausgaben.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
              2. Hello,

                ok... nun bin ich hier angelangt:

                [...]

                nun müsste es doch eigentlich gehn????

                Warum schaust Du Dir nicht die Beispiele an, die ich Dir verlinkt habe? Musst natürlich auch ein bisschen darum herum lesen, nicht nur exact diese Links... ;-)

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
              3. Hi,

                nun müsste es doch eigentlich gehn????

                nein. Aber die nächsten Hinweise zur Fehlerbeseitigung hat Dir Cheatah ja schon gegeben.
                Übrigens kannst Du das language-Attribut heutzutage ruhig weglassen.

                freundliche Grüße
                Ingo

          2. <script language="JavaScript" type="text/JavaScript">
            function gesamtpreis() {
            ergebnis == document.aufnahme.anzahl.value * document.aufnahme.einzelpreis.value
            document.aufnahme.gesamtpreis.value == ergebnis
            }
            </script>

            "==" ist ein Vergleichsoperator.
            Zum Zuweisen von Werten nimmt man "="

            LG, piranja

          3. Hi,

            <script [...] type="text/JavaScript">

            einen solchen MIME-Type gibt es nicht, im Gegensatz zu z.B. "text/javascript".

            ergebnis == document.aufnahme.anzahl.value * document.aufnahme.einzelpreis.value

            "==" ist ein Vergleichsoperator. Du suchst einen Zuweisungsoperator. Zudem solltest Du jede neue Variable zunächst mittels "var" deklarieren. Hinzu kommt, dass die Inhalte von Eingabefeldern Strings sind, keine nummerischen Werte, und somit in jedem Fall zunächst mittels einer günstigen parse-Funktion in den gewünschten Datentyp konvertiert werden sollten (resp. müssen).

            hm... geht nicht so ganz...

            Der Ansatz ist korrekt, nur einige Details fehlerhaft.

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. <script [...] type="text/JavaScript">

              einen solchen MIME-Type gibt es nicht, im Gegensatz zu z.B. "text/javascript".

              Erstens sind MIME-Typen an dieser Stelle gemäß den Standards case-insensitive, zweitens »gibt es« auch den MIME-Typ »text/javascript« nicht bzw. er hat folglich genausowenig Substanz wie »text/JavaScript«. Es ist lediglich eine informale Konvention, diesen nicht registrierten MIME-Typ zu verwenden. Es gibt strenggenommen auch kein »JavaScript« als normativ definierte Sprache. Insofern ist diese Deklaration letztlich sowieso widersinnig, wenngleich einzig praktikabel. Diese theoretischen Einwände könnte man freilich aufzeigen und etwa auf (das inpraktikable) application/x-javascript hinweisen, welches zumindest bereits in Netscapes JavaScript 1.1 vorgeschlagen wurde. Aber was willst du mit obigem Hinweis sagen?

              Mathias

      2. Hello,

        im head teil die funktion.
        und dann mit dem blur ereignis die funktion aufrufen und das ergebnis in das andere textfeld rein?

        wie schreibe ich das ergebnis in ein textfeld?

        Schau Dir mal "document.getElementById()" und die Beispiele dazu in Self an.
        Das sollte helfen: http://de.selfhtml.org/javascript/objekte/document.htm#get_element_by_id

        Ein Problem könnte noch die numerische Behandlung des Values werden.
        Dazu benötigst Du vielleicht eine der Funktionen http://de.selfhtml.org/javascript/objekte/unabhaengig.htm

        Ein gutes Besipiel findest Du unter http://de.selfhtml.org/javascript/beispiele/taschenrechner.htm

        Viel Erfolg

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  2. Hi,

    kann man das irgendwie so lösen, das sobald das textfeld anzahl "verlassen" wird der gesamtpreis berechnet wird!?

    Ich weiß nicht ob es irgendwo in diesem langen Thread schon gefallen ist, aber: Ich verwende für solche Dinge onChange="" - du brauchst ja nur rechnen, wenn sich was verändert hat, wenn der Nutzer nur mit der Tab-Taste durchspringt ist jede überflüssige Neuberechnung eine Zumutung...

    E7