[英]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.