如何在禁用按钮后关注错误第一次使用asp.net单击?

时间:2016-09-08 13:21:28

标签: javascript c# jquery asp.net

我在第一次点击后在asp.net中为禁用按钮编写了代码。代码如下:

<asp:Button ID="btnNext" runat="server" CssClass="btn btnBlue btnStep" Text="Submit" 
                OnClick="btnSubmit_Click" CausesValidation="true" ValidationGroup="ServiceFee" OnClientClick="this.disabled = true; this.value = 'In progress...';__doPostBack('btnNext','')" UseSubmitBehavior="false" />

它工作正常没问题,但现在我需要添加一些额外的功能,即我需要专注于错误。当用户单击提交按钮而不输入卡片详细信息或个人详细信息时,它将在空文本框中显示错误,并且突然页面将重新加载,因为我已经在javascript中编写了dopostback。那么如何关注错误以及之后回发需要显示错误?

2 个答案:

答案 0 :(得分:0)

btnNext事件中,您可以使用

// Supose txtCardDetails is the TextBox with the card details
if (string.IsNullOrWhiteSpace(txtCardDetails.Text))
{
    ClientScript.RegisterStartupScript(this.GetType(), "script", "document.getElementById('" + txtCardDetails.ClientID + "').focus();");
    return; // Maybe you want to do something before leave the event method
}

这将发送一个脚本来聚焦字段, 但是 ,我建议在客户端(JS)和服务器端(C#)进行验证所以,在客户端验证这个应该是这样的

<asp:Button ID="btnNext" runat="server" ... 
            OnClientClick="return SubmitIfValid(this);" ...  />


function SubmitIfValid(el) {
   if(document.getElementById('<%= txtCardDetails.ClientID %>').value === ''){
      alert('invalid card details');
      document.getElementById('<%= txtCardDetails.ClientID %>').focus();
      return false;
   }

   // more validations

   // if all is OK then...
   el.disabled = true; 
   el.value = 'In progress...';
   __doPostBack('btnNext','')
   return true;
}   

答案 1 :(得分:0)

您可以使用validationSummary之类的验证控件。像你自己那样管理错误可能非常困难。