Unten ist ein Teil des JQuery-Codes, der die Dateieingabe und die Schaltfläche "Datei löschen" anzeigt.
var $imagefile = $('<input />').attr({
type: 'file',
name: 'imageFile',
class: 'imageFile'
});
$image.append($imagefile);
var $imageclear = $('<input />').attr({
type: 'button',
name: 'imageClear',
class: 'imageClear',
value: 'Clear File'
});
$image.append($imageclear);
Der Grund, warum ich die Schaltfläche "Datei löschen" habe, ist, dass wenn Sie auf die Schaltfläche klicken, alles gelöscht wird, was in der Dateieingabe enthalten ist. Wie codiere ich es so, dass die Dateieingabe tatsächlich gelöscht wird, wenn ich auf die Schaltfläche "Datei löschen" klicke?
Antworten:
Das sollte funktionieren:
$imageClear.on('click', function() { $imageFile.val(''); });
quelle
<input type=file />
istreadonly
nach Auswahl der Datei in> = IE8 aus Sicherheitsgründen hier das ähnliche Q und Korrespondent A für die hier vorgeschlagene Lösung.<input type=file />
Der Datentyp ist Datei. Wir können ihn nicht löschen, indem wir eine leere Zeichenfolge an das Eingabefeld übergeben.Löschen Sie die Dateieingabe mit jQuery
$("#fileInputId").val(null);
Löschen Sie die Dateieingabe mit JavaScript
document.getElementById("fileInputId").value = null;
quelle
Dies ist die Methode, die ich auch gerne verwende, aber ich glaube, Sie müssen den Parameter bool true zur Klonmethode hinzufügen, damit alle Ereignisse mit dem neuen Objekt verknüpft bleiben und Sie den Inhalt löschen müssen.
var input = $("#fileInput"); function clearInput() { input = input.val('').clone(true); };
https://api.jquery.com/clone/
quelle
Durch Einstellung
$("ID").val(null)
arbeitete für michquelle
für React-Benutzer
e.target.value = ""
Wenn das Dateieingabeelement jedoch von einem anderen Element (mit einem
htmlFor
Attribut) ausgelöst wird, bedeutet dies, dass Sie das Ereignis nicht habenSie könnten also eine Referenz verwenden:
zu Beginn der Funktion:
const inputRef = React.useRef();
auf Eingabeelement
<input type="file" ref={inputRef} />
und dann auf einer onClick-Funktion (zum Beispiel) können Sie schreiben
inputRef.current.value = ""
this.inputRef = React.createRef()
quelle
Eine andere Lösung, wenn Sie sicher sein möchten, dass dies browserübergreifend ist, besteht darin, das Tag zu entfernen () und dann anzufügen () oder voranzustellen () oder auf andere Weise eine neue Instanz des Eingabe-Tags mit denselben Attributen erneut hinzuzufügen .
<form method="POST" enctype="multipart/form-data"> <label for="fileinput"> <input type="file" name="fileinput" id="fileinput" /> </label> </form> $("#fileinput").remove(); $("<input>") .attr({ type: 'file', id: 'fileinput', name: 'fileinput' }) .appendTo($("label[for='fileinput']"));
quelle
Das funktioniert zu
$("#yourINPUTfile").val("");
quelle
Ich habe so etwas gemacht und es funktioniert für mich
$('#fileInput').val(null);
quelle
In meinem Fall haben andere Lösungen nicht so funktioniert:
$('.bootstrap-filestyle :input').val('');
Wenn Sie jedoch mehr als eine Dateieingabe auf einer Seite haben, wird der Text auf allen Dateien zurückgesetzt.
quelle
Geben Sie die Eingabe-ID ein und setzen Sie val wie folgt leer: Hinweis: Setzen Sie kein Leerzeichen zwischen val leere doppelte Anführungszeichen val ("").
$('#imageFileId').val("")
quelle
Dieser Code funktioniert für alle Browser und alle Eingaben.
$('#your_target_input').attr('value', '');
quelle
$(document).ready(function( {$('#your_target_input').attr('value', ''); } );