2016-04-05 21 views
0

私はC#を初めて使用しています。私はInsertItemTemplateの中にセーブボタンを持っています。私は、最初のクリックをJava Scriptでクリックした後にボタンを無効にするために次のコードを使用しましたが、最初のクリックでは機能しません。javascriptで最初にクリックした後にボタンを無効にする方法

<asp:ImageButton ID="imgbtnSave" runat="server" CommandName="Add" CausesValidation="true" OnClientClick="this.disabled='true';return true;" /> 
+0

を私は「OnClientClick」の値がなければならないと思いますメソッドをC#コードで使用します。次に、ボタンを無効にするコードを追加します。 imgbtnSave.Enabled = false; –

+0

あなたの応答をありがとう私は複数のポストバックを停止したい – bhavya158

+1

@ B.ClayShannonあなたはOnClickの貢献を考えています。 OnClientClickは基本的にそこに置いたものをとり、ASP.NETがonclick HTML属性に入れるものに追加します。 – ElGavilan

答えて

1

あなたは、ブラウザ上のDOMオブジェクトの「無効」プロパティを変更しているが、それがクリックされますと、ボタンがサーバーにポストを行いますので、DOMへの変更は失われます。

サーバーコードでコマンド "Add"を処理する関数では、InsertItemTemplateからボタンを取得し、その "Enabled"プロパティをfalseに設定する必要があり、サーバー側からのコントロールが無効になります。

ページは、あなたがこれを避けるために、クライアント機能を必要とし、このような何かにリロードされていないが、複数のクリックを回避したい場合:

<asp:ImageButton ID="imgbtnSave" runat="server" CommandName="Add" CausesValidation="true" OnClientClick="return checkEnabled(this);" /> 

<!-- somewhere in your page --> 
<script> 
    function checkEnabled(item) 
    { 
     if(item.disabled != 'true') 
     { 
      item.disabled = 'true'; 
      return true; 
     } 

     return false; 
    } 
</script> 
+0

ありがとうございました..私はそれを試してみましたが、私が2回saveボタンを押すと関数が2回呼び出されています。どのように私はそれを停止するのですか? – bhavya158

+0

両方のソリューションを混在させると、OnClientClickはOnClientClick = "if(this.disabled!= 'true'){this.disabled = 'true'; trueを返します} else {return false;}"同じままです – Gusman

+0

ありがとうございます..リストビューから画像ボタンにアクセスするためにこのキーワードを使用して関数を呼び出しましたが、複数のポストバックを許可していますOnClientClick = "checkEnabled(this)" – bhavya158

関連する問題