/ / Input submit não enviou formulário com jquery no Internet Explorer - javascript, php, jquery, forms, internet-explorer

Input submit não enviou formulário com jquery no Internet Explorer - javascript, php, jquery, formulários, internet-explorer

Eu crio um código HTML e jQuery para enviar um formulário com jQuery e ele funciona em todos os navegadores, exceto no 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();
})

EDITAR: Eu também tentei:

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

Mas o envio de entrada não enviou um formulário apenas no Internet Explorer.

Respostas:

1 para resposta № 1

Tente isso.

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

1 para resposta № 2

Mudando:

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

para:

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

deve fazer o truque.


1 para resposta № 3

Você pode ter problemas ao usar a abordagem de eventos delegados com o evento "change" no IE (já que ele não suporta borbulhamento que a delegação de eventos depende).

Tente ligar o manipulador onchange diretamente à entrada do arquivo:

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

1 para resposta № 4

Eu acho que é a entrega do evento que limita algunsoperação que disparou por javascript. Então você deve sempre usar o evento original que é acionado pelo navegador, No seu caso, podemos usar o css para fazer a entrada de upload do arquivo para transparente e cobrimos o botão "a":

<input id="file-upload-input" name="upload" type="file" style="
width: 88px;
position: absolute;
left: 0;
opacity: 0;
filter:alpha(opacity=0)
">

Se isto funcionar, você pode deletar o evento onclick que está ligado ao nó "a"