4

フォームを送信して PHP スクリプトを呼び出す次のコードがあります。

<script>  
function handleBrowse()
{    
    $('#uploadedfile').click();
}

function displayFilePath(obj)
{ 
    document.getElementById('dummyFilePath').innerHTML = obj.value;
}
</script>


    <div id="dummyFilePath" class="dummyFilePath"></div>
    <input type="button" value="Browse" onclick="handleBrowse();"/>

    <form enctype="multipart/form-data" action="../php/uploader.php" method="POST" target="myiframe">
        <input type="file" id="uploadedfile" name="uploadedfile" onchange="displayFilePath(this)" style="display:none"/>        
        <input type="submit" value="Upload File" />
    </form>

    <iframe  name="myiframe" id="myiframe" src="" width=1 height=1 style="visibility:hidden;position:absolute;bottom:2px;"></iframe>

Firefox では、1 回クリックするだけで送信できます。しかし、IE では 2 回クリックする必要があります。

理由を説明していただけますか?

この jsFiddleを IE で実行して、問題を確認してください。アップロードするファイルを参照すると、ファイルのアップロード ボタンを 2 回押さない限り、フォームのアクションが機能しないことがはっきりとわかります。

PS: IE でのダブルクリックの問題は、以下の回答で提案されているように解決できますが、アップロードされたファイルが目的地 (uploader.php) に到達しません。その名前だけが

4

1 に答える 1