簡體   English   中英

僅在頁面驗證時禁用提交按鈕

[英]Disable Submit Button Only if page Validates

我無法讓它為我的一生工作。 我只需要在所有驗證完成后才能禁用“提交”按鈕,然后頁面才能發布到OnClick函數。

我有一個填寫了RequiredFieldValidators和ValidationSummary的表單。 現在它會驗證並且按鈕將被禁用,但是頁面不會繼續發布,只是停留在這種狀態:

在此處輸入圖片說明

我的按鈕

<asp:Button ID="Button3" runat="server" OnClick="Submit_Form" CssClass="btn btn-primary"
                Text="Submit" OnClientClick="return disableOnSubmit(this);" />

JS禁用按鈕

<script type="text/javascript">
function disableOnSubmit(target) {
    if (typeof (Page_ClientValidate) == 'function') {
        if (Page_ClientValidate() == false) { return false; }
    }
        target.value = 'Please wait...';
        target.disabled = true;
        return true;
}
</script>

我試圖阻止用戶兩次提交表單。 一旦單擊按鈕,該按鈕應被禁用,然后將其帶到下一頁。

好吧,我經常使用Javascript庫Valid8 節省一些驗證時間,否則我將要做的事情是這樣的(原始示例)

<asp:LinkButton 
     Id="btnSubmit" runat="server"
     Text="Submit" CssClass="btn btn-Primary"
     OnClientClick="return Submit()" />

單擊按鈕后,它將調用我們的函數Submit

function Submit() {
     var value = $("#txtField").Val();
     if(value != '') {
          if(!confirm("Are you sure you would like to submit?")) {
              return false;
          } else {
                return true; 
                // Be aware Link Button can have issue in Asp.Net sometimes.
          }
     }

因此,驗證發生在客戶端上。 現在,您只需將其放置在Page_Load

btnSubmit.Click = new EventHandler("btnSubmit_Click");

然后將Postback發數據放在btnSubmit_Click如下所示:

protected void btnSubmit_Click(object sender, EventArgs e)
{
     // Do Something.
}

那就是我會采取的方法,主要是避免不必要的Postbacks 請記住,我的Javascript示例是非常原始的,只是確保它不為null

剛剛看了你希望避免多次提交,你可以做一個Session Variable ,以避免它或者干脆:

if(Page.IsPostBack) 
{
     btnSubmit.Enabled = false;
}

這將在Page_Load 顯然,任何Postback都會立即禁用該按鈕。 因此,您可能需要確保在實際實施之前,該方法就可以在您的實施中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM