Я создаю код HTML и jQuery для отправки формы с помощью jQuery и работает во всех браузерах, кроме Internet Explorer.
HTML:
<form name="file_upload" id="file_upload" action="<?php echo base_url(); ?>projects/file" enctype="multipart/form-data" method="POST">
<a class="button" onclick="document.getElementById('file-upload-input').click(); return false;"><span class="plus"></span>Upload File</a>
<input id="file-upload-input" name="upload" type="file" style="display:none;">
<input id="submit-button" name="submit" type="submit" value="Upload" style="display:none;">
</form>
JQuery
$(document)
.on('change', '#file-upload-input', function(){
$('#submit-button').click();
})
EDIT: Я также пробовал:
$(document)
.on('change', '#file-upload-input', function(){
$("#file_upload").submit();
})
Но входной запрос не отправил форму только в Internet Explorer.
Я думаю, что это доставка события, что ограничивает некоторую операцию, которую запускает javascript. Поэтому вы всегда должны использовать оригинальное событие, которое запускается браузером. В вашем случае мы можем использовать css, чтобы сделать входной файл для загрузки прозрачным и накрыть его кнопкой "a":
<input id="file-upload-input" name="upload" type="file" style="
width: 88px;
position: absolute;
left: 0;
opacity: 0;
filter:alpha(opacity=0)
">
Если это работает, вы можете удалить событие onclick, связанное с узлом 'a'
Попробуй это.
$(document)
.on('change', '#file-upload-input', function(){
$("#file_upload").submit();
})
Изменение:
$('#submit-button').click();
чтобы:
$('#file_upload').submit();
должен сделать трюк.
Возможно, у вас могут возникнуть проблемы при использовании делегированных событий с событием "change" в IE (поскольку он не поддерживает барботирование, на которое полагается делегирование событий).
Попробуйте привязать обработчик onchange непосредственно к вводу файла:
$('#file-upload-input').on('change', function(){
$("#file_upload").submit();
})
<input id="file-upload-input" name="upload" type="file" style="display:none;" />
(уведомление />)