kathi008 Geschrieben 4. November 2002 Geschrieben 4. November 2002 Hallo! Ich hab folgende Formular in PHP erstellt: echo "<form method=\"POST\" action=\"pfad\">"; echo "<table width=\"100%\">"; echo "<tr><td align=\"center\"><input size=\"10\" type=\"text\" name=\"menge\" value=\"0\"></td>"; echo "<td align=\"center\"><input size=\"10\" type=\"text\" name=\"stueck\" value=\"0\"></td>"; echo "<td align=\"center\"><input size=\"10\" type=\"text\" name=\"gesamt\" value=\"???\" readonly></td></tr>"; echo "<tr><td align=\"center\"><input type=\"submit\" value=\"<< ERSTELLEN >>\"></td></tr>"; echo "</table></form>";[/PHP] Nun will ich, dass in das Inputfeld gesamt nichts eingegeben wird, sondern der Betrag sich automatisch aus Menge und Einzelpreis(Stueck) berechnet wird. Damit nichts eingegeben wird, habe ich schon "readonly" eingebaut. Wie geht denn das? :confused: Zitieren
Guybrush Threepwood Geschrieben 4. November 2002 Geschrieben 4. November 2002 Hi, Du könntest z.B. bei deinem Button mit onClick() ein JavaScript aufrufen das den Wert berechnet und dem Feld zuweist. Gruß Guybrush Zitieren
DanielH Geschrieben 4. November 2002 Geschrieben 4. November 2002 Oder ein JavaScript das von den Eingabefeldern bei OnChange aufgerufen wird, die Inhalte derer prüft und dann berechnet. Mit PHP (was an der Stelle dann auch nicht viel nützt) müsstest du die Werte einlesen, berechnen, das Formular neu aufbauen und die Werte vorbelegen. Das bringt nur dann was wenn irgendwelche Clients JavaScript deaktiviert haben. Zitieren
kathi008 Geschrieben 4. November 2002 Autor Geschrieben 4. November 2002 Mit dem Javascript habe ich schon soweit hingekriegt. Ohne Schleife hat es auch funktioniert. Nun in dem Dokument davor frage ich, wieviele Felder es sein sollten, um diese dann in der schleife zu erstellen. Blos kriege ich jetzt die Felermeldung von JavaScript: document.darst.netto.0 ist NULL oder kein Objekt. Woran liegt es? Hier der Ausschnitt aus den Code echo "<form name=\"darst\" ...>"; ... for($i=0;$i<$anz;$i++) { echo "<tr><td align=\"center\"><input size=\"10\" type=\"text\" name=\"menge.".$i."\" onChange=\"javascript:document.darst.netto[$i].value=berechnung($i);\" value=\"\"></td>"; echo "<td align=\"center\"><input size=\"10\" type=\"text\" name=\"stueck.".$i."\" onChange=\"javascript:document.darst.netto[$i].value=berechnung($i);\" value=\"\"></td>"; echo "<td align=\"center\"><input size=\"10\" type=\"text\" name=\"netto.".$i."\" value=\"\" readonly></td></tr>"; } ... echo "</form>"; [/PHP] Zitieren
DanielH Geschrieben 4. November 2002 Geschrieben 4. November 2002 Probier mal bei name=\"netto.".$i."\" den Punkt direkt nach netto raus zulassen. nimm statt dessen ein _ oder so. Ansonsten sprichst du tatsächlich ein nicht vorhandenes Objekt an. document.form.netto.0 in dem Fall. wobei .0 nicht gefunden wird. MfG Zitieren
kathi008 Geschrieben 4. November 2002 Autor Geschrieben 4. November 2002 Danke, mit dem "_" hat es funktioniert. function berechnung(i) { xy = 'menge_'+i; alert(xy); menge = document.darst.xy.value; <-- Nun kommt da die gleiche Felermeldung xz = 'stueck_'+i; stueck =document.darst.xz.value; return (menge*stueck); } Wie spreche ich den Dokument mit einer Variablen an? Zitieren
DanielH Geschrieben 4. November 2002 Geschrieben 4. November 2002 die Funktion ist nicht unbedingt nötig, es sei denn zur Fehlerbehandlung. hier mal reiner HTML-Code um das zu veranschaulichen: <form name="darst"> <input type="text" name="test_1" onchange="document.darst.erg_1.value=this.value * document.darst.test_2.value"> <input type="text" name="test_2" onchange="document.darst.erg_1.value=this.value * document.darst.test_1.value"> <input type="text" name="erg_1"> </form> Vielleicht ginge es auch mit deiner Funktion, allerdings weiss ich nicht, wie man einen String in ein Objekt innerhalb der Hirarchie umwandeln könnte :confused: MfG Zitieren
kathi008 Geschrieben 4. November 2002 Autor Geschrieben 4. November 2002 Das war ein kleiner Beispiel, hat auch geklappt. Danke Was ist aber, wenn ich die komplizierteren Berechnungen habe? Trotzdem, danke Zitieren
DanielH Geschrieben 4. November 2002 Geschrieben 4. November 2002 Bei komplexen Funktionen könngtest du ja die Werte direkt übergeben: function(this.value,document.form.name.wert,document.form.name2.wert) usw. Und dann lässt sich ja auch noch ein wenig logik in die Funktionen packen, z.B. das erst alle Formularwerte gefüllt werden und so. MfG Zitieren
kathi008 Geschrieben 4. November 2002 Autor Geschrieben 4. November 2002 Hi, ich hab´s geschaft! :bimei Man kann das Feld in JavaScript mit dem Befehl document.getElementsByName('netto_'+i)[0].value ansprechen. Danke für die Hilfe. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.