2013-11-21 64 views
1

我有以下的提交按鈕上的所有我的asp.net web應用程序,創建或編輯記錄: -如何禁用特定類下一個提交按鈕即

<input type="submit" value="Save" class="btn btn-primary"/> 

但我需要寫一個jQuery在用戶點擊它時禁用按鈕(以避免連續的API調用到外部系統)。所以我寫了這段代碼,但按鈕一旦點擊就不會被禁用。

$(".btn btn-primary").click(function() { 
      $("input[type=submit]").attr("disabled", "disabled"); 
      $("input[type=submit]").css("background-color", "grey"); 
     }); 

第二個問題,其方法,我應該遵循,櫃面我需要重新啓用該按鈕櫃面模型狀態發生錯誤,點擊提交按鈕後。任何人都可以建議,請

回答

1

試試這個:

$(".btn.btn-primary").click(function() { 
    $("input[type=submit]").attr("disabled", "disabled"); 
    $("input[type=submit]").css("background-color", "grey"); 
    return false; 
}); 
+0

這將覆蓋我的第一個要求,一旦點擊就禁用提交按鈕。但是如果用戶點擊提交按鈕,然後出現客戶端驗證錯誤(例如缺少必填字段),那麼即使用戶更正了客戶端驗證錯誤,按鈕也將保持禁用狀態。 –

0
$(".btn.btn-primary").click(function() { 
    $(this).attr('disabled','disabled'); 
} 
1

你的選擇是錯誤的

$(".btn.btn-primary").click(function() { 
    $(this).prop("disabled", "disabled").css("background-color", "grey"); 
}); 


this

+0

但是如果用戶點擊提交按鈕,然後發生客戶端驗證錯誤(例如缺少必填字段),在這種情況下,即使用戶更正了客戶端驗證錯誤,該按鈕也將保持禁用狀態。你能建議嗎 –

+0

@JohnJohn你使用jQuery驗證? –

+0

是jQuery驗證,使用asp.net mvc的數據標註在jQuery的驗證'submitHandler –

1

改變這種

$(".btn btn-primary").click(function() { 
      $("input[type=submit]").attr("disabled", "disabled"); 
      $("input[type=submit]").css("background-color", "grey"); 
     }); 

$(".btn .btn-primary").click(function (e) { 

       $(this).attr({disabled:true}); 
       $("input[type=submit]").css("background-color", "grey"); 
      }); 
0

嘗試在稍後階段使用

$(".btn.btn-primary").click(function() { 
     $(this).attr("disabled", "disabled") 
       .css("background-color", "grey"); 
     e.preventDefault(); 

    }); 
0

要重新啓用

$("input[type=submit]").removeAttr("disabled"); 
+0

但是我怎麼能定義,以防萬一表單返回錯誤(客戶端)後,用戶點擊提交按鈕,重新啓用按鈕? –

1

無上述取溶液的考慮是否形式提交是成功的。如果用戶忘記填寫所需的字段會怎麼樣?她會收到一條錯誤消息,嘗試糾正錯誤,然後發現她無法重新提交表單。即使你解決了這個問題,一旦用戶刷新頁面,她可以再次提交。

表單的目的是什麼?例如,如果它是一個註冊表單,那麼一旦輸入了電子郵件地址,它會檢查數據庫中的電子郵件地址並阻止用戶嘗試註冊兩次相同的電子郵件地址,我只是簡單地觸發Ajax方法。另一方面,如果您正在進行調查,並且希望阻止來自同一用戶的多次提交,我會創建一個cookie。在DOM準備就緒後,你的腳本會查找cookie。如果cookie存在,則不要顯示錶單。

+0

表單的目的是創建新資產並編輯現有資產,並且某些表單具有大約25個字段。你是對的上面的答案都沒有考慮到表單提交是否成功或者是否發生了客戶端驗證錯誤。這是我主要關心的問題。 –

+0

@john john - 您絕對可以使用禁用提交的技術。我只是將我在表單處理程序中提到的一些想法合併到一起,以便在您確定這是正確的操作過程之後才這樣做。 –

+0

你能否解釋一下你的觀點? –