Zum Inhalt springen

Hidden-Felder sollen erst NACH Submit befüllt werden...


sockä

Empfohlene Beiträge

Hi,

vielleicht geht es auch gar nicht... wenn dem so sei, dann habt ihr bestimmt ne andere Idee für mich... aber nun gut, hier erst mal meine Frage/Problem/Anliegen...:

Ich habe eine Oberfläche, auf der sehr viel mit JavaScript gemacht wird. Es können Layer verschoben werden etc. Nun möchte ich, dass bei Klick auf einen Submit-Button alle Positionen der Layer ausgelesen werden und zur Weiterverarbeitung an die nächste Seite geschickt werden. Die nächste Seite liest über PHP aus. Ich dachte mir, dass man über POST und eine Hidden-Feld im Formular das eigentlich lösen könnte... aber Pustekuchen... Wenn ich schreibe:

document.write("<input type='hidden' name='feld1' value='" + Layerwert_aus_javaScriptFunktion + "'>"); 

... dann hat "value" natürlich den Ausgangswert meines Layers. Ich möchte aber, dass hier der aktuelle Wert steht, also nachdem die Layer z.B. verschoben wurden. Kann man die Hidden-Felder nicht per Submit erst füllen... oder kann man dem Submit per onClick Werte mitgeben... sicher doch... aber ich weiß gerade nicht wie... *hmppf*

Danke schon mal.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich erspare mir mal den ausführlichen Kommentar, dass das vom Design her alles andere als sauber aussieht :)

Was ich machen würde ist den Submit manuell auszulösen, also sowas


<html>

  <head>

    <script type="text/javascript">

      function submitForm() {

        doStuff();   // Layer verschieben, Felder füllen, whatever

        document.form1.submit();

      }

    </script>

    ....

  </head>

  <body>

  ...

  <form name="form1" method="post">

  ...

    <input type="button" name="submitButton" onclick="submitForm()" value="Absenden" />

  ...

  </form>

  ...

  </body>

</html>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmmm... vielleicht hätte ich dazu schreiben sollen, dass die Layer vom User verschoben werden... ?!

Weil wenn ich das so mache, wie du geschrieben hast, dann habe ich immer noch nicht die Positionen der Layer nach dem Verschieben in meiner anderen Datei, wohin der Submit geht...

Am schönsten oder einfachsten wäre es, wenn man auf n Submit klickt, dann alle Positionen ausgelesen werden, die werden dann alle in ein Array gepackt und dieses Array landet *irgendwie* auf der nächsten Seite... :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Weil wenn ich das so mache, wie du geschrieben hast, dann habe ich immer noch nicht die Positionen der Layer nach dem Verschieben in meiner anderen Datei, wohin der Submit geht...
Okay, ich glaube ich verstehe langsam worauf du hinaus willst.

Vom Prinzip her musst du vor dem Submit den DOM-Baum des Dokumentes durchlaufen, bei den Layern, die der User verschieben kann die Position auslesen, diese Positionen in einem String codieren (z.B. LayerA1_x=1,LayerA2_y=2,...), diesen per hidden Field an die nächste Seite übersetzen, dort (am besten serverseitig) wieder decodieren, die Layer setzen, und fertig.

Alles in allem wohl deutlich mehr Arbeit, als du dir vorgestellt hast *irgendwie* geht das sicherlich - aber halt nicht ohne eine gehörige Portion arbeit dahinter.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, sorry, wenn ich mich am Anfang nicht vollständig ausgedrückt habe... ich hoffe, jetzt ist klar, was ich will... ;)

vor dem Submit den DOM-Baum des Dokumentes durchlaufen, bei den Layern, die der User verschieben kann die Position auslesen, diese Positionen in einem String codieren (z.B. LayerA1_x=1,LayerA2_y=2,...), diesen per hidden Field an die nächste Seite übersetzen

... wenn ich soweit schon mal komme, dann wäre ich schon mal sehr glücklich... aber mir fehlt da bisher der "code-technische" Ansatz, da es mir halt *irgendwie* im Kopf schon so vorschwebt, aber da ich kein JavaScript-Ass bin und das noch nicht gemacht habe, fehlt es mir einfach an ein bissl Start-Code, mit dem ich weiterwuseln kann.... :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn ich soweit schon mal komme, dann wäre ich schon mal sehr glücklich... aber mir fehlt da bisher der "code-technische" Ansatz, da es mir halt *irgendwie* im Kopf schon so vorschwebt, aber da ich kein JavaScript-Ass bin und das noch nicht gemacht habe, fehlt es mir einfach an ein bissl Start-Code, mit dem ich weiterwuseln kann.... :)

Dann guck dir mal die folgenden Infos an:

http://de.selfhtml.org/javascript/objekte/document.htm

http://de.selfhtml.org/javascript/objekte/htmlelemente.htm

http://de.selfhtml.org/javascript/objekte/node.htm

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jetzt habe ich gelesen und gelesen und ausprobiert... aber der Lösung näherte ich mich trotzdem nicht ein Stück. Ich stolpere nach wie vor an der Stelle: wenn ich auf nen Submit klicke, soll er in dem Moment erst über eine JavaScript Funktion (o.ä.) Werte der Layer auslesen. Aber ich kann mich drehen und wenden wie ich will - es klappt nicht.

Beispiel:

Ein Image liegt beim Laden der Seite auf der Position (100,300). Nun verschiebt der Benutzer dieses Image ein paar Mal hin und her, bis es am Ende auf der Position (500,600) liegt. Jetzt klickt der Benutzer auf einen Button "speichern", um die Position des Bildes (die neue Pos.) zu speichern. Aber wenn ich im onClick des Buttons eine Funktion auslöse... tja, dann kriege ich als Wert (100,300), also den Startwert. Obwohl ich mir vorher beim Verschieben die Koordinaten ausgeben lasse und er dann jedes Mal die richtigen anzeigt. Und im Code habe ich auch sowas hier stehen:


// In einer Klasse die Methode:


function onMouseMoving(e)

{

     if(netscape)

    {

	 this.x = e.clientX;

	 this.y = e.clientY;

    }

    else

    {

	this.x = event.clientX;

	this.y = event.clientY;

    }    		

}

... und this.x und this.y haben beim Verschieben auch die richtigen Werte. Nur sage ich beim Button-Klick sowas wie GetPositonX() dann bekomme ich immer den Ursprungswert, obwohl ich dem x immer den richtigen, gemovten Wert zuweise... aber es MUSS doch klappen... *irgendwie halt* :(((

Link zu diesem Kommentar
Auf anderen Seiten teilen

In einem Frameset kann man globale JS Variablen definieren, die von allen Frames ausgelesen werden können. Ich hab sowas in einem Online-Shop mal verwendet, bei dem der Warenkorb unten in einer quasi-Statusleiste durchläuft. Weiß jemand, ob das evtl. auch ohne Frameset geht?

Bei mir waren die Variablen in der index.htm eingebunden, die auch das Frameset erzeugt.

Kurzversion so:


<HEAD>

<script language="JavaScript">

var Layer1_x = "0";

</script>

</HEAD>


<frameset>

   <frame NAME="egal" SRC="formular.htm">

</frameset>

Jedenfalls müsstest Du in der Methode, die die Layer verschiebt, einbauen, dass z.B. top.Layer1_x.value sofort beim verschieben auf den Wert der neuen Position des Layers gesetzt wird, ähnlich wie Du das bereits hast, nur eben nicht auf this..., sondern auf die globale Variable top.... Das Submit setzt Du auf eine weitere Datei, die vielleicht so aussieht:

<form name="form1" action=...>

<script>

document.write("<input type='hidden' name='feld1' value='" + top.Layer1_x + "'>");

</script>

</form>

<body onload="form1.submit"></body>

Die Datei kann die Variablen auslesen, ohne dass diese ihr per GET oder POST übergeben werden müssen, schreibt über document.write Deine hidden-Felder und Submittet sich selber an die Datei, die letzten Endes die Werte verarbeiten soll.

Ungetestet, aber könnte klappen. Wenn nicht, schau ich nochmal genau nach, wie ich das damals gemacht hatte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...