Событие замены входного файла не запускается в Chrome - PullRequest
10 голосов
/ 08 июля 2011

Это странная вещь, которую я заметил в chrome. если пользователь выбирает файл, а затем снова выбирает тот же файл, снова открывая диалоговое окно файла, chrome не запускает событие onchange, а firefox делает это.

кто-нибудь тоже это заметил?

Ответы [ 3 ]

3 голосов
/ 16 июля 2011
function resetFileInput($element) {
  var clone = $element.clone();
  $element.replaceWith(clone);
}

А затем используйте:

$('#element_id').on('change', function(){
...
});

Хорошо сработало для меня!

3 голосов
/ 08 июля 2011

Это известная особенность Chrome, и быстрый Google по теме вызовет несколько интересных обсуждений.

Для меня имеет смысл, что событие change не будетогонь, так как ничего не изменилось (вы выбираете тот же файл)

Что касается вашего вопроса, что именно вы спрашиваете?Вы ищете способ изменить это поведение или просто хотите узнать, заметили ли мы это тоже?

Если вы хотите обойти это поведение, вы можете просто создать новый файл для ввода в свой файл.Javascript и заменить предыдущий.Таким образом, ваше change событие гарантированно сработает.

1 голос
/ 02 июля 2014

Более простое решение для сброса входного файла, которое хорошо работает для меня:

document.getElementById('idOfInput').value = '';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...