2012-05-11 4 views
0

に動作しません、私はボタンや入力= 'ファイル' コントロールを提出してHTMLフォーム持って提出:jQueryの上でpreventDefault()を

<form action="/Profile/UploadFile" enctype="multipart/form-data" method="post" onsubmit="OnUploadSubmit(this)"> 

OnUploadSubmit機能は次のようになります。

if (e.files[0].size > 5000000) { 
     $('#upload_error').css('display', 'block'); 
     $('#upload_error').text('The file size is too large for upload') 
     e.preventDefault(); 
     return false; 
    } 

    var files = e.files; 
    var ext = $('#file_uploader').val().split('.').pop().toLowerCase(); 
    if ($.inArray(ext, ['jpeg', 'jpg', 'png']) == -1) { 
     $('#upload_error').css('display', 'block'); 
     $('#upload_error').text('Only, jpg, jpeg, png is allowed'); 
     e.preventDefault(); 
     return false; 
    } 
    return true; 
} 

e.preventDefaultを()を返し、falseを返します。とにかく作業形態は提出されていません。

誰かが私の問題を知っていますか?

おかげで

+1

'e'は、あなたのハンドラの最初の引数として取得できるイベントオブジェクトでなければなりません。 – VisioN

+0

あなたはonsubmit = "return OnUploadSubmit(this)"が必要だと思います – dougajmcdonald

答えて

8

が必要だと思う:

onsubmit="return OnUploadSubmit(this)" 

私が推奨:

アドオンをid属性を削除してonsubmitを削除:

<form id="upload" action="/Profile/UploadFile" enctype="multipart/form-data" method="post"> 

jQuery:

$(function(){ // Document Ready 

     $('#upload').submit(function(e){ 

     e.preventDefault(); 
     if (e.files[0].size > 5000000) { 
       $('#upload_error').css('display', 'block'); 
       $('#upload_error').text('The file size is too large for upload') 
      } 

      var files = e.files; 
      var ext = $('#file_uploader').val().split('.').pop().toLowerCase(); 
      if ($.inArray(ext, ['jpeg', 'jpg', 'png']) == -1) { 
       $('#upload_error').css('display', 'block'); 
       $('#upload_error').text('Only, jpg, jpeg, png is allowed'); 
      } 
     } 

    }); 

}); 
3

OnUploadSubmitのためのあなたのメソッド定義は、パラメータとして、電子が含まれていますか?そうでなければ、e.preventDefaultは動作しません。

2

onsubmit="OnUploadSubmit(this)"の代わりにonsubmit="return OnUploadSubmit(this);"を試しましたか?

2

私はあなたが関数にイベントオブジェクトを渡すと、次のではないので、最初にこの方法では、preventDefaultを使用することはできませんonsubmit="return OnUploadSubmit(this)"

関連する問題