2016-09-08 4 views
0

1回目のクリック後、無効化ボタンの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を書いています。どのようにエラーに焦点を当て、ポストバック後にエラーを表示する必要がありますか?

+0

ajax呼び出しを行い、成功したかどうかを確認します。失敗した場合は、検証メッセージや失敗の理由をページに表示することができます。 – Aby

答えて

0

btnNextイベントでは、しかしが、私はクライアント側の検証(JS)を行うことをお勧めします、フィールドを集中するためのスクリプトを送信します

// 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 
} 

このような何かを持っていることができますサーバー側で(C#)と、そう、クライアント側でこれを検証することができvalidationSummaryのような検証コントロールを使用することができ、この

<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; 
} 
0

ようにする必要があります。あなた自身のようなエラーを管理することは非常に困難です。

関連する問題