Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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:

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.

  • Autor

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]

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

  • Autor

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?

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

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.