2012-02-08 14 views
3

IE以外のすべてのブラウザでフォームが動作する問題があります。送信ボタンにスクリプトを入力すると、Internet Explorerがフォームをポストバックしません。

私は問題をまだ解決していない最小限に抑えました。

私はこのようになりますテストのhtmlファイルを作成している:私はここで何をしようとしている

<html> 
    <body> 
    <form id="myform" action="/" method="post" enctype="multipart/form-data"> 
     <input id="fileToUpload" type="file" size="10" name="fileToUpload" /> 
     <input id="mysubmit" type="submit" value="submit"/> 
    </form> 
    <script src="jquery-1.5.1.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(function(){ 
     *$("#mysubmit").click(function(){ 
     *$("#fileToUpload").click(); 
     *}); 
     }); 
    </script> 
    </body> 
</html> 

ボタンが最初のファイル選択ボックスを開き、[フォームを送信提出することです。なぜなら、ユーザーがボタンをクリックし、ダイアログからファイルを選択し、フォームを直ちにポストバックできるように、ファイルセレクタを非表示にしたいからです。

FirefoxとChromeは、$("#fileToUpload").click();の後でスクリプトを続行する前にファイル選択ダイアログが閉じるのを待たず、インターネットエクスプローラが閉じられるまで待ってから続行するため、もう少し複雑です。しかし、私はそれを扱うことができます。

しかし、この場合、IEはフォームのポストバックをまったく実行しません。上記のという接頭辞が付いたという行を削除すると、IEもそれを返信します。私もそこに最後に$("#myform").submit();を置こうとしましたが、私はそれにも運がありませんでした。ポストバックはありません。

誰かがこれを解決する手がかりを持っていますか?

+0

内側に配置する必要があります私はChrome/FF/IE8で同じ結果を得ているからです。これはIEのどのバージョンですか? – JackWilson

+0

IEにJSエラーがありますか?私はChrome/IE9でも同じ結果を持っています –

+0

@SimonEdström - いいえ、スクリプトエラーはIE(またはChromeについては問題ありません)には表示されません。 –

答えて

1

私はそれとここで一緒に遊んだと思う:http://jsfiddle.net/K35tB/5/また、fileToUploadに何かが含まれているかどうかを確認するためにタイマーを使用し、後でポストバックをトリガーしようとします。何が起こったのは、FileToUloadがトリガーされた後にポストバックを行うと、「アクセス拒否」というメッセージが表示されることです。前にポストバックを実行すると、そのポストバックが動作します。それで、それは何らかの形で関連しています。あなたはフィドルの例をチェックして、それを修正して、パスがあることがわかりますタイマーのバージョンを実行している場合、私はIE 8.0.7 で遊んでいた

$("#mysubmit").click(function(){ 
     document.getElementById("fileToUpload").click(); 
     document.forms["myform"].submit(); // JavaScript error, No permission/Access denied (Åtkomst nekas in Swedish ;-)) 
    }); 

しかし、もちろんのこのコードの動作

document.forms["myform"].submit(); 

私たちが提出を実行すると、それは拒否されます。

おそらく、http://swfupload.org/または他のコンポーネントを使用して同じことを行う必要があります。純粋なHTMLコントロールを使用するプロジェクトの要件ではない場合。それが多分助けてくれることを願っています!

編集1: さらにいくつかの例を試しましたが、fileToUploadをフォームタグの外に置くと正しく動作します。それで、何らかのセキュリティの問題である私の考えが増えます。私はまた、フォームの外にfileToUploadを入れようとしましたが、ポストバックの直前にDOMを変更してフォームに挿入しました。同じ結果が、アクセスが拒否されました...

+0

はい、これはセキュリティ機能のようですが、IEでは他のブラウザよりもはるかに厳しいです。それでは、これに合わせてデザインを調整しなければなりません:) –

1

あなたは、単に核となるアイデアをこれを使用することができますしてもよいし、私は、問題がどこにあるかを正確に理解しようとしているレディ機能

$("fileToUpload").change(function(){ 
    $('#fileToUpload').submit(); 
}); 
関連する問題