kurt: summe eingegeber zahlen mit begrenzung..

hallo

hoffe jemand von euch kann mir weiterhelfen:

ich möchte ein formular mit verschieden feldern, in der je ein zahl eingegben wird, erstellen. nun sollte unten als total ein feld erscheinen, welche die summe der bis anhin eingeben zahlen anzeigt inkl. einer zahlenbegrenzung (z.b. die gesamtsumme darf nicht höher als 1000 sein, sonst fehlermeldung..)

schon mal zum voraus vielen dank!

gruss
kurt

  1. hi

    ich möchte ein formular mit verschieden feldern, in der je ein zahl eingegben wird, erstellen. nun sollte unten als total ein feld erscheinen, welche die summe der bis anhin eingeben zahlen anzeigt inkl. einer zahlenbegrenzung (z.b. die gesamtsumme darf nicht höher als 1000 sein, sonst fehlermeldung..)

    wo ist dein problem?

    so long
    ole
    (8-)>

    --
    Ein Gedicht: Alles bleibt wie immer... nur schlimmer.
    sh:( fo:) ch:| rl:° br:& n4:° ie:% mo:} va:| de:] zu:| fl:( ss:) ls: js:|
    1. eben: so einen script mit einem zähler inkl. begrenzung zu erstellen.

      1. hi,

        eben: so einen script mit einem zähler inkl. begrenzung zu erstellen.

        so einfach läuft das wohl nicht.

        du musst uns schon ein wenig darüber berichten, welche versuche du bisher unternommen hast, wo es hakt, etc.

        gruss,
        wahsaga

      2. hi

        eben: so einen script mit einem zähler inkl. begrenzung zu

        erstellen.

        das heißt das du noch keinen ansatz hast, richtig?
        wie wärs, wenn du dir einen ansatz erarbeitest?

        formuliere deine funktionen vieleicht erstmal trivial, a la "wenn das dann das sonst dies" etc.
        dann hast du den überblick was du brauchst und kannst dir das ganze schön sauber in JS schreiben.

        so long
        ole
        (8-)>

        --
        Ein Gedicht: Alles bleibt wie immer... nur schlimmer.
        sh:( fo:) ch:| rl:° br:& n4:° ie:% mo:} va:| de:] zu:| fl:( ss:) ls: js:|
        1. ihr seit ja ganz schön hartnäckig ;-)

          konkret gehts um einen wahlbarometer mit anzahl parteisitzen. ich hab auch schon was gebastelt, dass die summe zusammengezählt wird (ist wohl aber nicht so sauberer javascript-code..). anyway: jetzt gehts drum die summe zu beschränken, sprich: das gesamttotal darf nicht höher als 26 sein.

          hier mein bisheriger stand:

          <form method="POST" name="wahlen">
                 <table cellspacing="6" cellpadding="0" border="0" width="100%">
               <tr>
             <td class="content"><b>Partei</b></td>
             <td class="content"><b> Summe</b></td>
            </tr>
                <tr>
             <td class="content">Partei 1</td>
             <td class="content"><input type="text" size="3" name="svp" OnChange="document.wahlen.total.value=(document.wahlen.svp.value*1)+(document.wahlen.sp.value*1)+(document.wahlen.evp.value*1)+(document.wahlen.cvp.value*1)+(document.wahlen.fdp.value*1)+(document.wahlen.sd.value*1)+(document.wahlen.edu.value*1)+(document.wahlen.uebrige.value*1)+(document.wahlen.gruene.value*1);" value="0"></td>
            </tr>
                <tr>
             <td class="content">Partei 2</td>
             <td class="content"><input type="text" size="3" name="sp" OnChange="document.wahlen.total.value=(document.wahlen.svp.value*1)+(document.wahlen.sp.value*1)+(document.wahlen.evp.value*1)+(document.wahlen.cvp.value*1)+(document.wahlen.fdp.value*1)+(document.wahlen.sd.value*1)+(document.wahlen.edu.value*1)+(document.wahlen.uebrige.value*1)+(document.wahlen.gruene.value*1);" value="0"></td>
            </tr>
                <tr>
             <td class="content">Partei 3</td>
             <td class="content"><input type="text" size="3" name="fdp" OnChange="document.wahlen.total.value=(document.wahlen.svp.value*1)+(document.wahlen.sp.value*1)+(document.wahlen.evp.value*1)+(document.wahlen.cvp.value*1)+(document.wahlen.fdp.value*1)+(document.wahlen.sd.value*1)+(document.wahlen.edu.value*1)+(document.wahlen.uebrige.value*1)+(document.wahlen.gruene.value*1);" value="0"></td>
            </tr>
                <tr>
             <td class="content">Partei 4</td>
             <td class="content"><input type="text" size="3" name="gruene" OnChange="document.wahlen.total.value=(document.wahlen.svp.value*1)+(document.wahlen.sp.value*1)+(document.wahlen.evp.value*1)+(document.wahlen.cvp.value*1)+(document.wahlen.fdp.value*1)+(document.wahlen.sd.value*1)+(document.wahlen.edu.value*1)+(document.wahlen.uebrige.value*1)+(document.wahlen.gruene.value*1);" value="0"></td>
            </tr>
                <tr>
             <td class="content">Partei 5</td>
             <td class="content"><input type="text" size="3" name="evp" OnChange="document.wahlen.total.value=(document.wahlen.svp.value*1)+(document.wahlen.sp.value*1)+(document.wahlen.evp.value*1)+(document.wahlen.cvp.value*1)+(document.wahlen.fdp.value*1)+(document.wahlen.sd.value*1)+(document.wahlen.edu.value*1)+(document.wahlen.uebrige.value*1)+(document.wahlen.gruene.value*1);" value="0"></td>
            </tr>
                <tr>
             <td class="content">Partei 6</td>
             <td class="content"><input type="text" size="3" name="cvp" OnChange="document.wahlen.total.value=(document.wahlen.svp.value*1)+(document.wahlen.sp.value*1)+(document.wahlen.evp.value*1)+(document.wahlen.cvp.value*1)+(document.wahlen.fdp.value*1)+(document.wahlen.sd.value*1)+(document.wahlen.edu.value*1)+(document.wahlen.uebrige.value*1)+(document.wahlen.gruene.value*1);" value="0"></td>
            </tr>
                <tr>
             <td class="content">Partei 7</td>
             <td class="content"><input type="text" size="3" name="sd" OnChange="document.wahlen.total.value=(document.wahlen.svp.value*1)+(document.wahlen.sp.value*1)+(document.wahlen.evp.value*1)+(document.wahlen.cvp.value*1)+(document.wahlen.fdp.value*1)+(document.wahlen.sd.value*1)+(document.wahlen.edu.value*1)+(document.wahlen.uebrige.value*1)+(document.wahlen.gruene.value*1);" value="0"></td>
            </tr>
                <tr>
             <td class="content">Partei 8</td>
             <td class="content"><input type="text" size="3" name="edu" OnChange="document.wahlen.total.value=(document.wahlen.svp.value*1)+(document.wahlen.sp.value*1)+(document.wahlen.evp.value*1)+(document.wahlen.cvp.value*1)+(document.wahlen.fdp.value*1)+(document.wahlen.sd.value*1)+(document.wahlen.edu.value*1)+(document.wahlen.uebrige.value*1)+(document.wahlen.gruene.value*1);" value="0"></td>
            </tr>
                <tr>
             <td class="content">Partei 9</td>
             <td class="content"><input type="text" size="3" name="uebrige" OnChange="document.wahlen.total.value=(document.wahlen.svp.value*1)+(document.wahlen.sp.value*1)+(document.wahlen.evp.value*1)+(document.wahlen.cvp.value*1)+(document.wahlen.fdp.value*1)+(document.wahlen.sd.value*1)+(document.wahlen.edu.value*1)+(document.wahlen.uebrige.value*1)+(document.wahlen.gruene.value*1);" value="0"></td>
            </tr>
                <tr>
             <td class="content">Total</td>
             <td class="content"><INPUT VALUE="0" SIZE="3" NAME="total" readonly disabled>
                </td>
            </tr>
               </table>
            </form>

          1. hi

            ihr seit ja ganz schön hartnäckig ;-)

            aus prinzip ;)

            dein ansatz ist ja schon ganz nett, wenn ich mir das ganze aber so anschaue ist es doch recht unübersichtlich.

            warum lagers du dein javascript nicht in eine funktion aus?

            was dir jetzt noch fehlt ist, wie du schon sagtest, die berechnung der grenze.
            im prinzip reicht dir dazu eine einfache if abfrage. die du vor das zusammenrechnen stellst.

            wenn ERGEBNISS größer ZEILWERT dann GIB LAUT sonst BERECHNE

            formulier das ganze in JS um und schon hast dus. :)

            so long
            ole
            (8-)>

            --
            Ein Gedicht: Alles bleibt wie immer... nur schlimmer.
            sh:( fo:) ch:| rl:° br:& n4:° ie:% mo:} va:| de:] zu:| fl:( ss:) ls: js:|
            1. hoppla ;-) gleichzeitig!

              Schöne Grüße aus Köln-Ehrenfeld,

              Elya

              --
              We are still confused, but on a higher level.
          2. Hallo Kurt,

            das geht aber auch sparsamer ;-) Ich (schreibfaul) würde eine Funktion in den head des Dokumentes definieren, die onchange (der Inputfelder) die ganzen Rechenoperationen ausführt. Dann kannst du vor die Ausgabe in "total" eine if-Abfrage einsetzen, die den Wert begrenzt.

            Also ungefähr so:

            if (total <= maxwert) {trag den wert in das Formularfeld "total" ein}
            else {alert("irgendeine Fehlermeldung")}

            Das müßte klappen!

            Schöne Grüße aus Köln-Ehrenfeld,

            Elya

            --
            We are still confused, but on a higher level.
          3. Hi,

            ihr seit ja ganz schön hartnäckig ;-)

            wir koennen kein Elend sehen ;-)

            konkret gehts um einen wahlbarometer mit anzahl parteisitzen. ich hab auch schon was gebastelt, dass die summe zusammengezählt wird (ist wohl aber nicht so sauberer javascript-code..). anyway:

            Sei mir nicht boese, aber Dein Code ist Muell. Lerne mal, wie man per Schleife sowas vereinfacht und wie man Strings in Zahlen verwandelt, und diese dann ueberprueft. Dein Code bietet keinerlei Sicherheit bei Felhleingaben.

            jetzt gehts drum die summe zu beschränken, sprich: das gesamttotal darf nicht höher als 26 sein.

            Schau Dir mal den Test an, und versuche zu analysieren, was passiert. Die hiesige Javascript Referenz hilft Dir dabei.

            Gruesse  Joachim

            <html>
            <head>
            <script language="javascript1.2" type="text/javascript">
            var max =  10;
            function count(el) {
             val =  0;
             for(var i = 0; i < el.length; i++) {
              if (el[i].type = "text") {
               temp = parseInt(el[i].value);
               if (!isNaN(temp)) val += temp;
              }
              if (val > max) {
               alert("too much!");
               return;
              }
             }
             alert(val);
            }
            </script>
            </head>
            <body marginheight="0" marginwidth="0">
            <form Name="feld">
                <input onchange="count(this.form)" type="text" name="in1" size="3"><br>
             <input onchange="count(this.form)" type="text" name="in2" size="3"><br>
             <input onchange="count(this.form)" type="text" name="in3" size="3"><br>
            </form>
            </body>
            </html>

            1. Hi,

              if (el[i].type = "text") {

              ups, so natuerlich
              if (el[i].type == "text") {

              Du kannst auch die Namen aller zu ueberpruefenden Felder in ein Array packen, ind dieses in einer Schleife durchlaufen:
              myEl =  new Array("feld1","feld2",feld3");
              for (i = 0; i < myEl.length; i++) {
                temp =  parseInt(el.elements[myEl[i]].value);
                ...
              }

              Gruesse  Joachim