summe eingegeber zahlen mit begrenzung..
kurt
- javascript
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
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-)>
eben: so einen script mit einem zähler inkl. begrenzung zu erstellen.
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
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-)>
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>
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-)>
hoppla ;-) gleichzeitig!
Schöne Grüße aus Köln-Ehrenfeld,
Elya
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
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>
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