2 Stimmen

Eingabewert des Typs "Datei" in ColdFusion beim erneuten Senden beibehalten

Ich habe ein Formular in ColdFusion, das ursprünglich 5 Eingabefelder für das Hochladen von Dateien hat. Sollte der Benutzer feststellen, dass er mehr als 5 Dateien zum Hochladen hat, während er sie anhängt, möchte ich, dass das Formular die Werte beibehält, wenn es sich für die Änderung in der Anzahl der Felder neu sendet.

Die Verwendung des -Tags mit dem Attribut preservedata="yes" soll dies ermöglichen - aber alles, was ich bekomme, ist ein temporärer Wert, der im Wert des Eingabefelds beim erneuten Senden gespeichert ist, der nicht im Feld angezeigt wird und nicht für eine Einreichung funktioniert.

Bearbeiten: Danke für die großartigen Antworten, ihr habt alle geholfen und hattet recht. Ich konnte die von Adam vorgeschlagene Lösung umsetzen. Funktioniert super! Vielen Dank!

function changeFieldCount()  // JavaScript-Funktion für das Senden bei Änderung der Eingabefeldanzahl
 {
  var count = document.forms[0].numtotal.options[document.forms[0].numtotal.selectedIndex].value;
   document.forms[0].action = "me.cfm?count=" + count;
   document.forms[0].submit();
 }

  Anzahl der anzuhängenden Dateien: 

        selected>
            #cnt#

Das ist das, was ich erhalte, wenn ich die Quelle des resultierenden Sendevorgangs ansehe:

5voto

rip747 Punkte 9207

Dies geschieht aus Sicherheitsgründen und ist in allen Browsern so vorgesehen. Es gibt keine Möglichkeit, den Wert für ein Dateifeld einzufügen.

3voto

Adam Tuttle Punkte 19429

Um @SpliFF's Antwort zu erläutern, müssen Sie dynamisch mehr Dateifelder mit JavaScript erstellen.

Hier ist ein Beispiel, das jQuery verwendet, um das JavaScript etwas einfacher zu machen. Ich habe auch eine Variable verwendet, um die Anzahl der angezeigten Dateifelder zu verfolgen, sodass diesen allen eine eindeutige Nummer angehängt wird, um es möglich zu machen, sie serverseitig zu identifizieren.

    //verfolge die aktuelle Anzahl der angezeigten Dateifelder
    var numUploadFields = 5;
    //Füge eine anonyme Funktion zum Button hinzu, um mehr Felder hinzuzufügen
    $(function(){
        $("#add5").click(function(){
            for (var i = 0; i < 5; i++){
                numUploadFields += 1;
                var newHTML = "<br/><input type='file' name='upload" +
                              numUploadFields + "' />";
                $("#someSection").append(newHTML);
            }
        });
    });

2voto

SpliFF Punkte 36890

Erstellen Sie zusätzliche Datei-Inputs mithilfe von JS-DOM-Methoden. Da Sie die Seite nicht verlassen, geht dies schnell und es geht nichts verloren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X