2016-04-13 111 views
0

我有C#開頭的文件上傳表單,看起來像這樣: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 
}); 

原因IM這樣做是爲了防止按鈕被點擊多次(多交),我該如何解決這個問題,或者如果有一個更好的辦法,以防止多個崗位我我喜歡採取一些建議。我想有一個加載效果,雖然這就是爲什麼我更喜歡javascript ..我可以在ajax.post這樣做,但我聽說enctype = multipart/form-data不適用於ajax。任何幫助表示讚賞。因爲要禁用內$('#postBtn').click(...處理器和禁用輸入輸入不能提交這就是爲什麼你在httppost控制器操作空單

+1

問題是您在提交表單前禁用所有輸入,並且無法提交被禁用的輸入。 –

+0

而不是禁用所有input..just禁用提交按鈕。 –

+0

...或者在'setTimeout(function(){...},0)中包裝禁用;' 這樣,禁用將在表單序列化後發生。 –

回答

0

提交的表單是空的。

而不是禁用輸入只是禁用提交按鈕,以停止多次點擊。

Reference