0

リンクボタンの二重送信を防ぐにはどうすればよいですか。支払いボタンがあります。誰かがクリックしたらすぐに無効にし、支払いが失敗した場合は再度有効にします。私はAJAXとプログラムによる支払いゲートウェイへの投稿を使用しています。

このコードを使用してリンクボタンを無効にできます:

asp:LinkButton ID="btnPayment"  runat="server" onClientClick="this.disabled=true;__doPostBack(this.id,'');" Text='<%#Databinder.Eval(Container.DataItem,"Author")%>' ></asp:LinkButton>

しかし、支払いが失敗したときにどうすれば元に戻すことができますか?

4

2 に答える 2

0

ボタンクリックハンドラーで支払いが失敗した場合は、次のようなJavaScriptを実行するコードを記述できると思います。

ScriptManager.RegisterStartUpScript(this.Page, typeof(Page) , "enableBtn" , "$('[$=btnPayment].removeAttr(disabled)')" , true);

これにはjqueryが必要です。

または、jqueryを使用したくない場合は、document、getelementbyIDを呼び出すこともできます。

これがあなたが望むものではない場合は私に知らせてください

もう1つの解決策がありますが、それは厄介なようです。

初めに

<asp:LinkButton ID="btnPayment"  runat="server" Text='<%#Databinder.Eval(Container.DataItem,"Author")%>' ></asp:LinkButton>

そしてjqueryを使用してこれを行います:

$(document).ready(function() {  $('id$=btnPayment').live("click", function(e) {

  $(this).attr("disabled", "disabled");  
  __doPostBack($(this).attr("id"),'');
   e.preventDefault();
 });  });

そのため、Ajaxを使用して無効な属性を削除し、リンクボタンが再びクリック可能になるようにしました。

これは理にかなっていますか

于 2012-12-18T05:30:35.247 に答える
0

コードビハインドでは、コードを有効または無効にできます。クリックしたら、最初にリンクボタンを無効にし、支払いが成功した場合は有効にします。上記のコードはサーバートリップも実行するため、ajax呼び出しは発生しません。

btnLogin.Enabled = false;
if (txtUserName.Text == "hh") btnLogin.Enabled = true;
于 2012-12-18T07:44:49.460 に答える