У меня был пост здесь:
.change, действующий странно в IE9
Однако я столкнулся с новым инцидентом, связанным с обработкой формы загрузки файлов, и мне было любопытно, если кто-то столкнулся с этой проблемой.
Моя первоначальная проблема заключалась в том, что я не мог заставить событие onchange работать, и я подумал, что это проблема с моим javascript, но я обнаружил, что это связано с тем, как эта форма активируется.
У меня есть вход в файл
<input type="file" name="abc"/>
теперь я сделал 2 вещи.
Я скрыл вход и создал кнопку (для лучшего управления стилем), которая активирует ввод.
<button id="mybutton">click to upload a pic</button>
<input type="file" name="abc"/>
а затем JS для взаимодействия между ними:
$("#mybutton").click(function() {
$("Input[type=file]").click()
};
и, конечно, submit для формы (я использую родительский элемент в этом примере, но в моем фактическом коде я использую идентификатор формы).
$("input[type=file]").change(function() {
$(this).parent().submit();
});
Когда я нажимаю "mybutton", ожидается ожидаемый результат, откроется окно просмотра и позволяет выбрать файл с моего компьютера. Также, когда я изменяю файл во всех браузерах, кроме IE, запускается событие onchange. Теперь, если я покажу форму и вручную нажмите кнопку "просмотреть" и выберете файл, событие onchange будет запущено. Таким образом, в основном браузер рассматривает нажатие кнопки фактического файла иначе, чем выполнение $( "input [type = file]" ). Click()
Кто-нибудь знает, как это исправить?