2013-06-19 4 views
5

フォームを送信しています。ファイルアップロードの進行状況バーを表示するなどのいくつかの操作を行うまで、送信アクションを防止したいと思います。 event.preventDefault() function not working in IEなどのSOの質問に基づいてこのコードを設定しました。IE 10のevent.preventDefault

$(document).ready(function(){ 
    $("#fileform").submit(function(e){ 
     if(!e) e = window.event; 
     if (e.preventDefault){ 
      // Firefox, Chrome 
      e.preventDefault(); 
     }else{ 
      // Internet Explorer 
      e.returnValue = false; 
     } 

     // other code 
    } 
} 

FirefoxとChromeではすべて正常に動作します。送信アクションが阻止され、進捗バーが表示され、フォームに送信されます。しかし、IE 10では、ifステートメントの最初の条件が実行され、フォームが送信しようとしているようです(IE 10の送信バブルが表示されます)。最初の条件が実行されるのはなぜですか?

IE 10は、Internet Explorer 8と9では使用できなかったDefDefault()をサポートしていますか?もしそうなら、IE、Firefox、Chrome、Safariなどを妨げないIE 8,9,10のフォーム送信アクションの防止をどうすれば適切に処理できますか?

答えて

8

jQueryは既にクロスブラウザの仕事をしています。

$("#fileform").submit(function(e){ 
    e.preventDefault(); 
    // other code 
}); 
+0

私はこのコードを使用すると、何も変わりません。 FirefoxとChromeは正常に動作しますが、進行状況バーはIEに表示されません(IEフォームの送信バブルが表示されます)。 –

+0

あなたは正しいですか?イベントはjQueryで正規化され、e.preventDefault()は期待どおりに動作します。ありがとう。 –

0

は以下を置くことも試してみてください。

e.preventDefault(); 

http://api.jquery.com/event.preventDefault/

http://api.jquery.com/event.stopPropagation/

e.stopPropagation(); 

あなたが読んでいる場合: Stop form from submitting , Using Jquery

あなたが表示されます:

Becoz e.preventDefault() is not supported in IE. In IE it is e.returnValue = false 

修正コード:

$("#fileform").submit(function(e){ 
     if(!e) e = window.event; 

     e.preventDefault(); 
     e.stopPropagation(); 

     // other code, do something here 
     return true; // or false if something goes wrong 
    } 
+1

'e.preventDefault();を使用します。 e.stopPropagation(); 'は変更を示しません。 –

+0

コードの変更部分を参照 –

+0

まだ違いはありません。 –