anstelle von <input type="file">
, ist es möglich zu verwenden <input type="text">
und dann skript es mit Javascript oder jquery so, dass, wenn das Textfeld angeklickt wird, der Datei-Upload-Dialog erscheint ..... (und habe es tatsächlich hochgeladen, wenn es in einem Formular eingereicht wird)Trigger Datei Upload-Dialog mit Javascript/Jquery
Antwort
Ich habe den Verdacht, dass Sie aus Sicherheitsgründen nicht in der Lage sind, dies zu tun. Ich scheine mich zu erinnern, dass ich vor einiger Zeit versucht habe, das value-Attribut eines Datei-Upload-Elements zu setzen, was Sie nicht tun können, da Sie bestimmte Dateien ohne Zustimmung vom Computer eines Benutzers abrufen können. Ich würde mir vorstellen, dass sich dies auf das programmatische Ändern eines Textfelds in ein Element zum Hochladen von Dateien erstreckt, da Sie den Wert des Textfelds auf die hinzuzufügende Datei festlegen und dann den Typ in ein Upload-Element ändern und das Formular absenden können.
Es sollte eine einfache Sache genug sein, um zu versuchen, obwohl ich denke, dass Sie innerhalb der Grenzen von Javascript arbeiten und deshalb, wenn Sie es nicht in nativem JS tun können, würden Sie JQuery wahrscheinlich nicht verwenden können .
Hoffnung diesem Sinne bedeuten
JLOVE
Sie so etwas wie das macht?
$('input[type=text]').click(function() {
$('input[type=file]').trigger('click');
});
$('input[type=file]').change(function() {
$('input[type=text]').val($(this).val());
});
Beachten Sie jedoch, dass die von der Dateieingabe angegebenen Wert aus Sicherheitsgründen eine Fälschung ist. Wenn Sie nur den Dateinamen anzeigen möchten, können Sie die Schrägstriche ausschneiden.
Hier ist ein Beispiel dafür, wie es zu tun, um eine Zeichenfolge aufgeteilt und ein Array Pop mit:
$('input[type=text]').click(function() {
$('input[type=file]').trigger('click');
});
$('input[type=file]').change(function() {
var vals = $(this).val(),
val = vals.length ? vals.split('\\').pop() : '';
$('input[type=text]').val(val);
});
Sie diese weiter für Systeme berücksichtigen anpassen können, die einen Schrägstrich als das Verzeichnis verwenden Separator. Es ist auch wichtig zu beachten, dass wenn Sie dies tun, Sie die Funktionalität vieler moderner Browser verlieren, wo Benutzer Dateien von ihrem Computer direkt auf eine Dateieingabe ziehen können. Wenn ich Sie wäre, würde ich dieses Paradigma annehmen, indem ich die Dateieingabe stemple, anstatt zu versuchen, eine Texteingabe in etwas zu verwandeln, das es nicht ist.
Nur zur Info, das funktioniert nicht in Opera. –
ja, so etwas ... es scheint nicht in Firefox zu funktionieren, obwohl es ein großer Nono wäre –
@Drackir @kamikaze_pilot Ja ... kurz gesagt, einige Browser betrachten diese Art von Sache als eine Entführung der Browser-Benutzeroberfläche, und daher entweder geradeaus nicht erlauben, den Klick auf eine Dateieingabe auszulösen, oder geben Sie eine Aufforderung, Sie zu fragen, wenn Sie es wirklich wollten. Wie ich in meinem Beitrag gesagt habe, versuchen Sie auf andere Weise über Ihr Problem nachzudenken. Sie würden wahrscheinlich am besten tun, indem Sie einfach eine Dateieingabe formatieren und die Werte anderer Elemente ändern (wenn Sie den Dateinamen in einer Texteingabe anzeigen möchten, können Sie dies trotzdem tun). – treeface
Dont verwenden display:none
oder visibility:hidden
zunächst in der CSS-
In JQuery:
$(document).ready(function() {
$('#file').hide();
$("#elementToBeClicked").click(function(){
$('#file').click();
});
});
Funktioniert das? und ist das Cross-Browser? –
Und wenn der HTML-Code hat gleich mehrere Eingänge wie diese unter: -
<div class="item">
<input type="text" />
<input type="file" />
</div>
<div class="item">
<input type="text" />
<input type="file" />
</div>
Erweitern auf @ Treaface-Antwort, der Jquery-Code (aktuelle Version 1.8.0) wäre:
$('input[type=text]').click(function() {
$(this).parent(".item")
.find('input[type=file]')
.trigger('click');
});
$('input[type=file]').change(function() {
$(this).parent(".item")
.find('input[type=text]')
.val($(this).val());
});
Beachten Sie zwischen $ parents() und $ parent() in jQuery.Probieren Sie es aus @http://jsfiddle.net/afxDC/
$ eltern() Version ist @ http://jsfiddle.net/afxDC/1/ –
glaube ich Ihnen die Eingabe von Text in eine jquery binden kann/JavaScript-Funktion, die eine Datei-Eingabe mit dem Code und die dem Benutzer nun eine Datei kann
<input type="text" onclick="upload"/>
jquery
function upload(){
$('[input type='text']').append('<input type="file"/>')
- 1. Kontinuierlicher Web-Job mit Timer-Trigger und Blob-Trigger
- 2. Asynchroner Trigger vs Trigger
- 3. Neue Zeile für Sublime-Completion-Datei-Trigger?
- 4. Ändern der Sprache nicht "Trigger" Ressource-Datei
- 5. Trigger-Datei herunterladen in iPython Notebook
- 6. Trigger-Makro mit Abbruch
- 7. Update-Trigger mit mysql
- 8. Trigger Keypress mit jQuery
- 9. PostgreSQL-Trigger mit JDBC erstellen
- 10. Trigger mit Fall in Oracle
- 11. Mysql Trigger mit zwei Tabellen
- 12. Oracle Trigger-Erstellung mit Kompilierungsfehlern
- 13. Trigger CSS Übergang mit JavaScript
- 14. Trigger-CSS-Hover mit JS
- 15. Trigger Inner Join mit Bedingung
- 16. Trigger Bootstrap Dropdown mit JS
- 17. Trigger JXCollapsiblePane mit Maus über
- 18. Trigger Real Event mit jQuery
- 19. mysql Trigger mit zwei Tabellen
- 20. UpdateProgress mit Trigger funktioniert nicht
- 21. Mysql Trigger mit WENN THEN
- 22. Trigger Submit-Taste mit Sitzungsvariable
- 23. TRIGGER mit INSERT UND UPDATE
- 24. Hilfe mit SQL-Server-Trigger
- 25. MySQL Trigger Drop Abfrage innerhalb Trigger
- 26. WPF Passwordbox mit Update Source Trigger
- 27. Javascript Verwenden von benutzerdefinierten HTTP-Header und Trigger-Datei herunterladen
- 28. eine Datei Eingang Trigger über Javascript zu öffnen
- 29. Orakel-Trigger in Sql-Server-Trigger umwandeln
- 30. Trigger js Ereignisse wie onclick von einer externen js Datei
Warum würden Sie wollen erstellen laden um dies zu tun? ein Upload-Input-Typ macht genau das – qwertymk
ja gut, im Grunde möchte ich nicht, dass der Browse-Button angezeigt wird ... ziemlich viel –
Wenn Sie [jQuery File Upload] verwenden (https://github.com/blueimp/jQuery -File-Upload), erreichen Sie dies durch html und css: ' '. –