Мне удалось заставить это работать, используя следующее ...
function resetFileElement(ele)
{
ele.val('');
ele.wrap('<form>').parent('form').trigger('reset');
ele.unwrap();
ele.prop('files')[0] = null;
ele.replaceWith(ele.clone());
}
Это было проверено в IE10, FF, Chrome & Opera.
Есть две оговорки ...
По-прежнему не работает должным образом в FF, если вы обновите страницу, элемент файла будет заново заполнен выбранным файлом. Откуда она получает эту информацию, мне не под силу. Что еще относится к элементу ввода файла, который я могу попытаться очистить?
Не забудьте использовать делегирование для любых событий, которые вы прикрепили к элементу ввода файла, поэтому они будут работать и после создания клона.
Что я не понимаю, так это то, что кто-то подумал, что не позволяет очистить поле ввода от недопустимого недопустимого выбора файла - это хорошая идея?
ОК, не позволяйте мне динамически устанавливать его со значением, чтобы я не мог вытащить файлы из ОС пользователя, но позвольте мне очистить неправильный выбор без сброса всей формы.
Это не то, что 'accept' делает что-то кроме фильтра, в любом случае, в IE10 он даже не понимает типы пантомимы MS Word, это шутка!