Входные данные не отправили форму с jquery в Internet Explorer

0

Я создаю код 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.

  • 2
    Закройте ваши входы, прежде чем идти дальше. Это может быть так просто - <input id="file-upload-input" name="upload" type="file" style="display:none;" /> (уведомление />)
  • 0
    Арчер, спасибо за комментарий. Я делал это раньше, но это не сработало.
Показать ещё 1 комментарий
Теги:
forms
internet-explorer

4 ответа

1

Я думаю, что это доставка события, что ограничивает некоторую операцию, которую запускает 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'

  • 0
    Даже эта идея не решила проблему. Я действительно не знаю, где может быть проблема: S
1

Попробуй это.

$(document)
.on('change', '#file-upload-input', function(){
    $("#file_upload").submit();
})
  • 0
    Я тоже стараюсь, но это не сработало. Спасибо за ответ
1

Изменение:

$('#submit-button').click();

чтобы:

$('#file_upload').submit();

должен сделать трюк.

1

Возможно, у вас могут возникнуть проблемы при использовании делегированных событий с событием "change" в IE (поскольку он не поддерживает барботирование, на которое полагается делегирование событий).

Попробуйте привязать обработчик onchange непосредственно к вводу файла:

$('#file-upload-input').on('change', function(){
    $("#file_upload").submit();
})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню