2017-11-18 2 views
0

Ich benutze this solution, um den Button Text von <input type="file" />. ändern Es funktioniert, aber es hat einen kleinen Nachteil - nachdem eine Datei ausgewählt wurde, wird der Benutzer nicht sehen, welche Datei ausgewählt wurde, weil diese Informationen wird nicht angezeigt (es ist mit der ursprünglichen Schaltfläche ausgeblendet). Wie kann ich diese Informationen sichtbar machen, ohne die ursprüngliche (versteckte) Schaltfläche anzuzeigen?Capture und Anzeige eines Textes von einem versteckten Eingang

Der Code:

<input type="button" id="loadFileXml" value="loadXml" onclick="document.getElementById('file').click();" /> 
<input type="file" style="display:none;" id="file" name="file"/> 
+0

Sie könnten ein div erstellen und es mit Informationen aus den 'Dateien' füllen Eigenschaft in der Eingabe: https://stackoverflow.com/questions/26082721/how-to-display-selected-file-names-before-uploading-multiple-files-in-struts2 – yuriy636

+0

@lurie überprüfen Sie die Antwort. lassen Sie mich wissen, wenn Sie etwas anderes erwartet haben –

Antwort

1

Sie können ein span ohne Text in ihm erstellen und dann update sein Wert auf den Wert Ihres input Dateityp. So etwas wie

function showFileName(){ 
 
document.getElementById("fileName").innerHTML = document.getElementById("file").files[0].name 
 

 
}
<input type="button" id="loadFileXml" value="loadXml" onclick="document.getElementById('file').click();" /> 
 
<span id="fileName"></span> 
 
<input type="file" onChange="showFileName()" style="display:none;" id="file" name="file"/>

+0

Das funktioniert. Das einzige Problem ist ein "C: \ fakepath" -Teil vor dem ausgewählten Dateinamen. Ich arbeite in Ubuntu, daher weiß ich nicht, was in einem Windows-System angezeigt wird. Kann nur der Dateiname (mit Erweiterung) beibehalten werden? – Iurie

+0

Dies wird in beiden Umgebungen gleich sein. Wie auch immer, ich habe den Code bearbeitet, um nur den Dateinamen zu drucken. –

+0

@lurie, bitte akzeptieren und upvote die Antwort, wenn es Ihre Anfrage gelöst –

1

Sie können ein Platzhalter Element unter dem sichtbaren Eingang hinzufügen:

<p id="file_path"></p> 

Dann (I verwenden jQuery für diesen Teil), Veranstaltungen Seite:

​$('#file').change 
(
    function(e) 
    { 
     $('#file_path').text(e.target.files[0]); 
    } 
);​​​ 
+0

Ich kann es nicht zur Arbeit. Ich erhalte diese Meldung in der Developer Tools Console: 'Uncaught SyntaxError: Ungültiges oder unerwartetes Token'. – Iurie

+0

Entschuldigung, ich habe behoben: O –

Verwandte Themen