Есть ли шанс обнаружить каждый выбор файла, который пользователь сделал для HTML- элемента input
типа file
?
Это задавалось много раз, но обычно предлагаемое onchange
событие не срабатывает, если пользователь снова выбирает тот же файл.
javascript
html
forms
dom-events
dronus
источник
источник
input
значение s в '' после того, как что-то сделаем с файлом. Но это также уберет видимое имя файла. Тем не менее, это может быть нормально, так как файл фактически обрабатывается, и результат этого действия может появиться где-то еще.file
вводаonchange
не похоже.Ответы:
Установите значение
input
дляnull
каждогоonclick
события. Это сброситinput
значение и вызоветonchange
событие, даже если выбран тот же путь.Вот ДЕМО .
Примечание: это нормально, если ваш файл имеет префикс «C: \ fakepath \». Это функция безопасности, которая не позволяет JavaScript знать абсолютный путь к файлу. Браузер все еще знает это внутренне.
источник
this.value = null
в конце,onchange
потому что можно активировать элемент ввода, не нажимая на него (с помощью клавиатуры). Вы можете хранить,input.files
если вам нужно сослаться на это позже.this.value=null;
необходим только для Chrome, Firefox будет нормально работать только сreturn false;
Вот скрипка
источник
В этой статье под заголовком «Использование ввода формы для выбора»
http://www.html5rocks.com/en/tutorials/file/dndfiles/
Он добавляет прослушиватель событий в «change», но я протестировал его, и он срабатывает, даже если вы выбираете тот же файл, а не если вы отменяете.
источник
change
событие будет происходить только при изменении имени файла.Используйте событие onClick для очистки значения целевого ввода, каждый раз, когда пользователь нажимает на поле. Это гарантирует, что событие onChange будет запущено и для того же файла. Работал для меня :)
Использование TypeScript
источник
Делайте все, что хотите, после успешной загрузки файла. Просто после завершения обработки файла установите значение для элемента управления файлом в пустую строку. Поэтому .change () будет вызываться всегда, даже если имя файла изменяется или нет. как, например, вы можете сделать эту вещь и работал для меня, как шарм
источник
источник
Очистка значения 0-го индекса ввода работала для меня . Пожалуйста, попробуйте следующий код, надеюсь, это будет работать (AngularJs).
источник