1

私は最近、ファイルのアップロードに jQuery / iframe ソリューションを実装しましたが、かなり厄介な問題に遭遇しました (もちろん IE のみ)。

アップロード ボタンをクリックしてアップロードするファイルを選択すると、ファイルを含むフォームが iframe に自動的に送信されます。ただし、コントローラーで送信を処理してアクションを起動するには、ページの任意の場所をクリックする必要があります。

「変更」機能の実行が停止しているように見える iframe がフォーカスを得るという問題だと思いますが、完全にはわかりません。おそらく、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.
});
4

1 に答える 1

3

.live()この奇妙な動作を引き起こすようです。あなたがieを使用する場合

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

IEでも動作します。

于 2011-05-06T14:03:53.590 に答える