Gibt es eine Möglichkeit, jede Dateiauswahl zu erkennen, die der Benutzer für ein HTML- Element input
vom Typ getroffen hat file
?
Dies wurde schon oft gefragt, aber das normalerweise vorgeschlagene onchange
Ereignis wird nicht ausgelöst, wenn der Benutzer dieselbe Datei erneut auswählt.
javascript
html
forms
dom-events
Dronus
quelle
quelle
input
Wert s auf '' setzen, nachdem wir etwas mit der Datei gemacht haben. Aber das würde auch den sichtbaren Dateinamen entfernen. Dies kann jedoch in Ordnung sein, da die Datei tatsächlich verarbeitet wird und das Ergebnis dieser Aktion möglicherweise an einer anderen Stelle angezeigt wird.file
Eingabeereignisonchange
ähnelt nicht.Antworten:
Setzen Sie den Wert der
input
zunull
auf jederonclick
Veranstaltung. Dadurch wird derinput
Wert des 's zurückgesetzt und dasonchange
Ereignis ausgelöst , auch wenn derselbe Pfad ausgewählt ist.Hier ist eine DEMO .
Hinweis: Es ist normal, wenn Ihrer Datei das Präfix "C: \ fakepath \" vorangestellt ist. Dies ist eine Sicherheitsfunktion, die verhindert, dass JavaScript den absoluten Pfad der Datei kennt. Der Browser weiß es noch intern.
quelle
this.value = null
am Ende von zu setzen,onchange
da es möglich ist, ein Eingabeelement zu aktivieren, ohne darauf zu klicken (über die Tastatur). Sie können speichern,input.files
wenn Sie später darauf verweisen müssen.this.value=null;
ist nur für Chrome erforderlich, Firefox funktioniert nur mitreturn false;
Hier ist ein FIDDLE
quelle
In diesem Artikel unter dem Titel "Verwenden der Formulareingabe zur Auswahl"
http://www.html5rocks.com/de/tutorials/file/dndfiles/
Es fügt einen Ereignis-Listener zu 'change' hinzu, aber ich habe ihn getestet und er wird ausgelöst, selbst wenn Sie dieselbe Datei auswählen und nicht, wenn Sie abbrechen.
quelle
change
Ereignis wird nur bei Dateinamenänderungen ausgelöst.Verwenden Sie das Ereignis onClick, um den Wert der Zieleingabe jedes Mal zu löschen, wenn der Benutzer auf das Feld klickt. Dadurch wird sichergestellt, dass das Ereignis onChange auch für dieselbe Datei ausgelöst wird. Arbeitete für mich :)
Verwenden von TypeScript
quelle
Tun Sie, was immer Sie tun möchten, nachdem die Datei erfolgreich geladen wurde. Setzen Sie den Wert der Dateisteuerung nach Abschluss Ihrer Dateiverarbeitung auf eine leere Zeichenfolge. Daher wird .change () immer aufgerufen, auch wenn sich der Dateiname ändert oder nicht. wie zum Beispiel kannst du dieses Ding machen und hast für mich wie Charme gearbeitet
quelle
quelle
Das Löschen des Werts des 0. Index der Eingabe hat bei mir funktioniert . Bitte versuchen Sie den folgenden Code, hoffen Sie, dass dies funktioniert (AngularJs).
quelle