Quest: Inhalt von Textfeld mit document.value weitergeben

Hi Leute,

ich will ein Textfeld in einem Formular per document.value weitergeben. Leider wird aber nur die Grundvalue die voreingestellt war weitergegeben.

  
<form method="post" action="_self" name="test">  
  <img src='testbild.jpg' onClick="document.getElementById('string').value=document.getElementById('text').value;document.test.submit()" />  
  <input type="text" name="text" id="text" value="Voreingestellter Text" />  
  <input type="hidden" name="string" id="string" />  
</form>  

Ich will das man den Text im Textfeld ändern kann und der neue Inhalt vor dem Senden des Formulars im hidden input abgespeichert wird. Was mache ich falsch?

  1. Moin Quest!

    Achtung es folgt eine Try-And-Error-Antwort ohne fundierte JS-Kenntnisse:

    Ich will das man den Text im Textfeld ändern kann und der neue Inhalt vor dem Senden des Formulars im hidden input abgespeichert wird. Was mache ich falsch?

    Ich vermute dein Fehler liegt irgendwo in der submit()-Funktion. Ich habe dein Beispiel, mal geringfügig für Testzwecke abgeändert:

    <form method="post" action="_self" name="test">  
      <img src='testbild.jpg' onClick="document.getElementById('string').value=document.getElementById('text').value;alert(document.getElementById('string').value)" />  
      <input type="text" name="text" id="text" value="Voreingestellter Text" />  
      <input type="hidden" name="string" id="string" />  
    </form>
    

    Dort erhalte ich im Fenster den tatsächlichen Inhalt der Inputbox und nicht den Defaultwert.

    Freundliche Grüße
    Kackfohgel

  2. Hallo Quest,

    vier Fragen:

    Was willst du mit   action="_self"  erreichen? Bei mir kam da nur "_self" nicht gefunden.

    Warum benutzt du ein Bild und keinen Button zum Absenden des Formulars?

    Warum kopierst du den Inhalt des Text-Inputs in einen versteckten?

    Was willst du überhaupt erreichen?

    Gruß, Jürgen

    1. Hallo Quest,

      vier Fragen:

      Was willst du mit   action="_self"  erreichen? Bei mir kam da nur "_self" nicht gefunden.

      Damit ist gemeint, dass die aufrufende Seite auch die empfangende Seite sein soll

      Warum benutzt du ein Bild und keinen Button zum Absenden des Formulars?

      Warum nicht? Kommt doch auf das gleiche heraus. Für mein Layout ist das Bild nur einfacher.

      Warum kopierst du den Inhalt des Text-Inputs in einen versteckten?

      Weil es in meinem Script nicht nur ein Bild mit Textfeld gibt und ich mit dieser Auswahl eine Variable für PHP fülle die ich dann nicht erst aus einem array auslesen muss. AUch das ist hier einfacher.

      Was willst du überhaupt erreichen?

      Ich will über verschiedene Div's so etwas wie eine Speichernfunktion für Dateien bauen. Das Textfeld ist dabei der Dateiname unter dem die Datei abgespeichert werden kann. Funktioniert auch alles ganz gut, aber das oben gepostete funktioniert halt noch nicht. Deshalb die Frage wie ich es besser machen kann. Ohne Dateinamen zu ändern klappt es.

      Gruß, Jürgen

      1. Hello,

        Was willst du mit   action="_self"  erreichen? Bei mir kam da nur "_self" nicht gefunden.

        Damit ist gemeint, dass die aufrufende Seite auch die empfangende Seite sein soll

        Das gehört dann aber ins Target-Attribut, wenn Du dasselbe Fenster des Browsers meinst.
        Wenn Du dieselbe Ressource auf dem Server meinst, bleibt das Action-Attribut dafür einfach leer oder wird dem Ressource-Identifier gefüllt, entweder als absolute Pfadangabe oder als relative.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        Die ultimative Seite für Selbermacher
        1. Hello,

          Was willst du mit   action="_self"  erreichen? Bei mir kam da nur "_self" nicht gefunden.

          Damit ist gemeint, dass die aufrufende Seite auch die empfangende Seite sein soll

          Das gehört dann aber ins Target-Attribut, wenn Du dasselbe Fenster des Browsers meinst.
          Wenn Du dieselbe Ressource auf dem Server meinst, bleibt das Action-Attribut dafür einfach leer oder wird dem Ressource-Identifier gefüllt, entweder als absolute Pfadangabe oder als relative.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          Ja das war mir klar. Wollte da jetzt keinen Dateinamen reinschreiben und habe als Platzhalter das _self rein geschrieben. Sorry war unsauber. Habe in meinem Script auch eine Datei angeben.

      2. hi,

        Weil es in meinem Script nicht nur ein Bild mit Textfeld gibt und ich mit dieser Auswahl eine Variable für PHP fülle die ich dann nicht erst aus einem array auslesen muss. AUch das ist hier einfacher.

        Du machst das viel zu kompliziert. Wenn Du schon JS ins Spiel bringst, dann speichere die Benutzereingaben in einem Objekt, was Du zum Senden einfach nur serialisieren und mit FormData übertragen kannst.

        Außerdem kannst Du eine Progressbar einbauen, bei einem Upload mit Submit hingegen kann der Benutzer nicht nachvollziehen, ob sich da überhaupt was tut, bei Datenmengen > 10MB ist das nicht mehr aktzeptabel.

        Ich will über verschiedene Div's so etwas wie eine Speichernfunktion für Dateien bauen. Das Textfeld ist dabei der Dateiname unter dem die Datei abgespeichert werden kann.

        Wenn Benutzer den Dateinamen vorgeben können, handelst Du Dir eine Menge Probleme ein. Erstens liefert der Browser selbst den Dateinamen, falls der überhaupt eine Rolle spielt und zweitens gibt es andere Möglichkeiten, serverseitig einen Namen zu vergeben, falls dieser eindeutig sein muss.

        MfG

      3. @@Quest:

        nuqneH

        Warum benutzt du ein Bild und keinen Button zum Absenden des Formulars?

        Warum nicht? Kommt doch auf das gleiche heraus.

        Nein, tut es nicht. Überhaupt nicht.

        Formulare sollten auch per Tastatur abgeschickt werden können. (Enter)

        Für Benutzer assistiver Technologien (wie Screenreader) ist ein Bild per se kein Button. Man müsste einiges an Aufwand betreiben, um es zu einem zu machen. [Marco Zehe, Steve Faulkner]

        Deshalb: HTML-Element button verwenden! <button><img src="" alt=""/></button>

        Qapla'

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
        1. @@Gunnar Bittersmann:

          nuqneH

          Deshalb: HTML-Element button verwenden! <button><img src="" alt=""/></button>

          PS: Man kann Buttons auch stylen:

          button  
          {  
          	border: 0;  
          	padding: 0;  
          	background: transparent;  
          }  
            
          button.link::-moz-focus-inner  
          {  
          	border: 0;  
          	padding: 0;  
          }
          

          Qapla'

          --
          „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
          1. @@Gunnar Bittersmann:

            nuqneH

            button.link::-moz-focus-inner

            C & P error: '.link' hat sich da eingeschmuggelt.

            Qapla'

            --
            „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      4. Hallo Quest,

        zum "Submit-Bild" hat sich Gunnar ja schon geäußert, und ich kann mich ihm nur anschließen.

        Ich habe zum Testen in deinem Codeschnippsel mal das "_self" durch "#" ersetzt. Das Umkopieren funktioniert. Woran erkennst du, dass es bei dir nicht funktioniert? Kommen die beiden Werte im CGI-Script nicht an?

        Gruß, Jürgen