Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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:

Geschrieben

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.

Geschrieben

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]

Geschrieben

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

Geschrieben

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?

Geschrieben

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

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...