2016-04-13 12 views
0

を提出してください私はC#を持っている。このようなファイルのアップロードとフォームを開始:この1つは完全に動作しC#MVC BeginForm無効化ボタンが後

@using (Html.BeginForm("New", "Post", FormMethod.Post, new { @class = "form-inline", role = "form", id = "newPostForm", enctype = "multipart/form-data" })) 
    { 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
    @Html.HiddenFor(c => c.Post.MinuteID) 
    @Html.HiddenFor(c => c.Post.UserID) 
    @Html.TextBoxFor(m => m.PostImage, new { type = "file", name = "PostImage", id = "PostImage", accept = "image/*", @class = "file-input imageInput" }) 
    <button id="postBtn" type="submit" class="btn btn-primary btn-block intbtn">Post&nbsp;</button> 
    } 

が、私は時にボタンやフィールドを無効にするには、いくつかのjqueryのスクリプトを追加したいです送信ボタンがクリックされます。しかし、その後、送信されたフォームはコントローラに当たったときに空になります。私は間違って何をしていますか? は、これは私のJavaScriptです:

$('#postBtn').click(function() { 
    $('.imageInput').prop("disabled", true); 
    $('#postContent').prop("disabled", true); 
    $('#btnText').text('Saving.. '); 
    $('#postBtn').prop("disabled", true); 
    //$('#newPostForm').submit(); -- i tried adding this and changing my button type to 'button' but still empty form values are submitted 
}); 

理由イムこのボタンを複数回(複数のポスト)をクリックすることがないようにするためですやって、私はこの問題を解決するか、またはより良いアプローチがあるかどうI「は、複数のポストを防ぐ方法dはいくつかの提案をしたい。私は、なぜ私はJavaScriptを好むthatsのローディング効果をしたい..私はajax.postでこれを行うことができますが、enctype = multipart/form-dataは、ajaxで動作しないと聞いた。どんな助けもありがとうございます。

+1

問題は、フォームを送信する前にすべての入力を無効にしていて、無効な入力を送信できないことです。 –

+0

すべての入力を無効にする代わりに、送信ボタンを無効にしてください。 –

+0

...または、あなたは 'setTimeout(function(){0})に無効をラップします; このようにして、フォームがシリアル化された後に無効になります。 –

答えて

0

$('#postBtn').click(...ハンドラ内の入力を無効にし、無効な入力を送信できないため、提出されたフォームは空ですこれはhttppostコントローラのアクションで空のフォームを持っている理由です。

入力を無効にする代わりに、複数のクリックを停止するために送信ボタンを無効にするだけです。

Reference

関連する問題