2011-08-09 10 views
3

jQueryを使用してクライアントサイドのクリックイベントをASP.NETボタンにアタッチすると、ポストバックを実行できなくなりますか?サーバー側の処理が行われる前にjQueryを実行するだけで済み、このプロセスを中断しているようです。サーバーコントロールでjQueryを使用してASP.NETボタンをクリック

$('[id$="btnDisableAlarms"]').click(function() { 
      var commentValue = $('[id$="txtComment"]').val(); 
      if (commentValue == "") { 
       // add red border (CSS) 
       $('[id$="txtComment"]').addClass("redCommentError"); 
      } 
      return; 

     }); 

ボタンはクリックイベントで配線されていますが、ブラウザは動きません。

btnDisableAlarms.Click+=new EventHandler(btnDisableAlarms_Click); 

public void btnDisableAlarms_Click(object sender, EventArgs e) 
    { 
     Response.Write("Still able to manage a postback from server"); 
    } 

答えて

2

問題は、jQueryのクリックハンドラが、ASPがボタンに割り当てるクリックハンドラを上書きしてしまうことです。

$('[id$="btnDisableAlarms"]').each(function (index, button) { 
    var oldClickHandler = button.onclick; 
    $(button).click(function() { 
     // Do your stuff 
     oldClickHandler(); 
    }); 
}); 

これは、古いクリックハンドラをキャッシュするための正しい構文ではないかもしれませんが、それに類似したものになります。

編集:実際に、コンテキストとクリックイベントを維持する方が安全だろう、のようなもの:

$('[id$="btnDisableAlarms"]').each(function (index, button) { 
    var oldClickHandler = button.onclick; 
    $(button).click(function (clickEvent) { 
     // Do your stuff 
     oldClickHandler.call(button, clickEvent); 
    }); 
}); 

これは、古いクリックハンドラがthisを使用したりすることをクリックイベントにアクセスしようとするとことを保証しますそれを引き起こしたが、それでも正常に動作します。

+1

小文字:onClick - > onclick。投稿を修正する編集が小さすぎます(編集は6文字以上でなければなりません)。 –

+0

私はonclickでケーシングを更新しました。 – MrBoJangles

0

jQueryの.submit()メソッドを使用して通常のフォーム送信を試行することもできます(または、クリックイベントではなく送信イベントをリッスンする)ことができます。

は例のために、ここで読む:http://api.jquery.com/submit/

0

はちょうどあなたのjQueryのメソッドが最後にtrueを返す必要があり、それがポストバックを実行します。

関連する問題