2

別の開発者が最初にコーディングしたOnClickイベントを含むasp.netImageButtonがあります。次のようになります。

<asp:ImageButton ID="ImageButtonSaveAddress" runat="server" ImageUrl="btnSave.gif" OnClick="ImageButtonSaveAddress_Click" />

背後のコードでは、イベントコードは次のようになります...

    protected void ImageButtonSaveAddress_Click(object sender, ImageClickEventArgs e)
    {
       if (this.SaveAddressBook())
       {
          this.RedirectToAddressBook();
       }
    }

私は2つのことをしたいと思います。パート1)画像ボタンを無効にして再送信できないようにします。パート2)画像ボタンのsrcを新しい「グレー表示」ボタンに変更します(ボタンが押されたことをユーザーに視覚的に警告します)。

私はパート1とパート2の両方をjavascript(jQuery)で実行しようとしていました。このような。

$j(".disable-submit").click(function() {
    // replace the image
    var $this = $j(this).attr("src", imgPathSaveBtnDisabled).addClass('wait-cursor');

    // disable button from getting click again 
    // (this doesn't work, it just causes the page to stop)
    return false;
});

私はこれについて間違っているように感じます。

4

2 に答える 2

1

最近、まったく同じことをする必要がありました (ダブルクリックを停止します-別名ダブルフォーム投稿、およびグレー表示ボタン)。

ASP.NETサーバー側ボタンの制御を作成することを選択しました。「OnClientClick」イベントをオーバーライドしてクリック時に無効にしますが、既存のポストバック動作(検証を含む)は保持します。

見てください:

ASP.NETカスタムボタンコントロール-OnClientClickをオーバーライドするが、既存の動作を維持する方法は?

もともと私はあなたがやろうとしていることをやっていた(それはすべてJavaScriptでやる)が、それに関する問題はあなたが既存のポストバックの振る舞いとページの検証を失うことである。すべてのボタンにカスタムコードが必要です。

上記の方法は、再利用可能なサーバーコントロールであり、追加の構成を行わなくても、任意のページにドロップできます。

私は自分のライブWebサイトでそれを使用しており、完全に機能します。

これはButtonコントロールですが、LinkBut​​tonにも適用できます。どちらもOnClientClick仮想メソッドを定義しているためです。

HTH。

于 2010-09-24T03:36:03.600 に答える
1

$this.attr('disabled','disabled');以前に試したことはありますreturn false;か?削除しますreturn false;

falseを返すと、その要素のデフォルトイベントが停止します(この例では、送信)。

it would look like this,

$j(".disable-submit").click(function() {
    // replace the image
    var $this = $j(this).attr("src", imgPathSaveBtnDisabled).addClass('wait-cursor');

    // disable button from getting click again 
    $this.attr('disabled','disabled');
});
于 2010-09-24T01:54:01.330 に答える