Проблема с решением для загрузки файлов jQuery / iframe - PullRequest
1 голос
/ 06 мая 2011

Я недавно внедрил решение jQuery / iframe для загрузки файлов и столкнулся с довольно раздражающей проблемой (конечно, только в IE).

После нажатия кнопки загрузки и выбора файла для загрузки я автоматически отправляю форму, содержащую файл, в свой iframe. Однако я должен щелкнуть в любом месте страницы, чтобы процесс отправки обработал и запустил действие в моем контроллере.

Я полагаю, что проблема заключается в том, что iframe получает фокус, что, по-видимому, мешает функции 'change' завершить выполнение, но я не совсем уверен. Возможно, для того, чтобы iframe переместила фокус на исходную страницу, чтобы продолжить выполнение, требуется какой-либо тип функции загрузки?

Код:

Загрузка формы и файла:

<form id="attachForm" action="<%= Url.Action("TestUpload","Images") %>" 
      method="post"  enctype="multipart/form-data" target='upload_target' >
        <input id='actualupload' type='file' multiple="" name='file' />
</form>
<iframe id='upload_target' name='upload_target' src='' 
        style="width:0; height: 0; border: 0;" frameborder="0"></iframe>

jQuery для отправки формы:

$("#actualupload").live('change',function()
{
    $("#attachForm").submit();
    alert("Fired!"); //This only occurs after clicking on the screen after the 
                     //file selection.
});

1 Ответ

3 голосов
/ 06 мая 2011

Кажется, что .live() вызывает это странное поведение. Если вы используете то есть

$(function() {
    $("#actualupload").change( function()
    {
        $("#attachForm").submit();
        alert("Fired!"); //This only occurs after clicking on the screen after the 
                         //file selection.
    });
});

это работает и в IE.

...