Y a-t-il une chance de détecter chaque sélection de fichier effectuée par l'utilisateur pour un élément HTML input
de type file
?
Cela a été demandé plusieurs fois auparavant, mais l' onchange
événement généralement proposé ne se déclenche pas si l'utilisateur sélectionne à nouveau le même fichier.
javascript
html
forms
dom-events
dronus
la source
la source
input
valeur s sur '' après avoir fait quelque chose avec le fichier. Mais cela supprimerait également le nom de fichier visible. Cependant, cela peut être correct, car le fichier est réellement traité et le résultat de cette action peut apparaître ailleurs.file
entréeonchange
ne ressemble pas.Réponses:
Définissez la valeur de
input
tonull
sur chaqueonclick
événement. Cela réinitialisera lainput
valeur de et déclenchera l'onchange
événement même si le même chemin est sélectionné.Voici une DÉMO .
Remarque: C'est normal si votre fichier est préfixé par 'C: \ fakepath \'. C'est une fonction de sécurité qui empêche JavaScript de connaître le chemin absolu du fichier. Le navigateur le sait toujours en interne.
la source
this.value = null
à la fin duonchange
car il est possible d'activer un élément d'entrée sans cliquer dessus (en utilisant le clavier). Vous pouvez stockerinput.files
si vous avez besoin de le référencer plus tard.this.value=null;
n'est nécessaire que pour Chrome, Firefox fonctionnera bien uniquement avecreturn false;
Voici un FIDDLE
la source
Dans cet article, sous le titre "Utilisation de la saisie de formulaire pour la sélection"
http://www.html5rocks.com/en/tutorials/file/dndfiles/
Il ajoute un écouteur d'événements pour «changer», mais je l'ai testé et il se déclenche même si vous choisissez le même fichier et non si vous annulez.
la source
change
événement ne se déclencherait que sur les changements de nom de fichier.Utilisez l'événement onClick pour effacer la valeur de l'entrée cible, chaque fois que l'utilisateur clique sur le champ. Cela garantit que l'événement onChange sera également déclenché pour le même fichier. A travaillé pour moi :)
Utilisation de TypeScript
la source
Faites ce que vous voulez faire après le chargement réussi du fichier. Juste après la fin de votre traitement de fichier, définissez la valeur du contrôle de fichier sur une chaîne vide. Ainsi, le .change () sera toujours appelé même si le nom du fichier change ou non. comme par exemple, vous pouvez faire cette chose et travailler pour moi comme un charme
la source
la source
Effacer la valeur du 0ème indice d'entrée a fonctionné pour moi . Veuillez essayer le code ci-dessous, j'espère que cela fonctionnera (AngularJs).
la source