550 Stimmen

Wie man <input type = "file"> in Angular zurücksetzt

Ich entwickle eine Metro-App mit VS2012 und Javascript

Ich möchte den Inhalt meines Dateieingabefelds zurücksetzen:

Wie soll ich das machen?

530voto

Jordan Kasper Punkte 12612

Die jQuery-Lösung, die @dhaval-marthak in den Kommentaren gepostet hat, funktioniert offensichtlich, aber wenn Sie sich den tatsächlichen jQuery-Aufruf ansehen, ist es ziemlich einfach zu erkennen, was jQuery tut, indem es einfach das value-Attribut auf einen leeren String setzt. Also in "reinem" JavaScript wäre es:

document.getElementById("uploadCaptureInputFile").value = "";

97voto

levkaster Punkte 2550

Sie müssen in die

-Tags einwickeln und dann können Sie die Eingabe zurücksetzen, indem Sie Ihr Formular zurücksetzen:

onClick="this.form.reset()"

88voto

Maxmaxmaximus Punkte 1945

Dies ist die BESTE Lösung:

input.value = ''

if(!/safari/i.test(navigator.userAgent)){
  input.type = ''
  input.type = 'file'
}

Von allen Antworten hier ist dies die schnellste Lösung. Kein Eingabe-Klon, kein Formular-Reset!

Ich habe es in allen Browsern überprüft (es hat sogar IE8-Unterstützung).

66voto

sstauross Punkte 2332

Wenn Sie folgendes haben:

dann machen Sie einfach:

$("#fileControl").val('');

um das Dateikontrollkästchen zurückzusetzen.

56voto

indreed Punkte 1135

Ein weiter Lösungsansatz (ohne Auswahl von HTML-DOM-Elementen)

Wenn Sie einen 'change'-Ereignishandler auf das Eingabefeld hinzufügen, können Sie im JavaScript-Code (für bestimmte Bedingungen) folgendes aufrufen:

event.target.value = '';

Zum Beispiel in HTML:

Und im JavaScript:

onChangeFunction(event) {
  let fileList = event.target.files;
  let file = fileList[0];
  let extension = file.name.match(/(?<=\.)\w+$/g)[0].toLowerCase(); // unter der Annahme, dass diese Datei eine Dateierweiterung hat

  if (extension === 'jpg') {
    alert('Gültige Dateierweiterung!');
  }
  else {
    event.target.value = '';
    alert('Falsche Dateierweiterung! Die Dateieingabe wurde gelöscht.');
  }

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