Web開発では、多くの場合、コントロールのOnClientClick OnClickイベントに使用します。
不適切に使用した場合、多くの場合、いくつかの予期せぬことが起こる遭遇し、以下は私の小さなの一部を混乱されることに結論します:
まず、我々はこれら二つの事象を理解する必要があります。
OnClientClickは、一般的に処理されるようにJavaScriptを使用し、クライアント側のイベントメソッドである。それはIEの終了時に直接実行されている。実行をクリックします。
OnClickイベントは。ボタンをクリックした後、実行し、ポストバックを実行し、IISがサーバー側で実行されている方法を扱うサーバー側のイベントです。
同時にボタンならば、私たちは通常のロジックに応じてそれを実行する方法を、別のクライアントOnClientClick方法OnClickイベントハンドラメソッドを持っています。
OnClientClick我々は、サーバー上のコースのいくつかのクライアントを検出行うために使用される同じテストを行うことができますが、そうすることのコストは、リソースを消費し、サーバーと対話することですが、ユーザーエクスペリエンスが良くありません...
例:
// jsDelは()JavaScript関数です。
<ASP:ボタンのID = "btnDel" WIDTH = "80px" のCssClass = "のButtonStyle" にrunat = "サーバー" テキスト= "删除" OnClientClick = "戻るjsDel();" クリック時= "btnDel_Click1" />
サーバーを実行して、我々は、このボタンを押したときにするとき、自動的に最初のクライアントを実行していることに注意してください、と。クライアントがfalseを返した場合、サーバー側のメソッドが実行されないように対応しています。これだけを通して検出達成しますサーバ側のメソッドを実行するために行く前に。
これは、我々は上記に書いた場合ことを意味します。
<ASP:ボタンのID = "btnDel" WIDTH = "80px" のCssClass = "のButtonStyle" にrunat = "サーバー" テキスト= "删除" OnClientClick = "jsDel(); return false;" を クリック時= "btnDel_Click1" />
クライアントは常にfalseを返すようにそうかかわらずjsDel結び目のサーバ側のメソッドに対応する。BtnDel_Click1を実行するためには、戻り偽のために実行されることはありません
我々は書く場合:
<ASP:ボタンID = "btnDel" 幅= "80px" のCssClass = "のButtonStyle" にrunat = "サーバー" テキスト= "删除" OnClientClick = "jsDel();" クリック時= "btnDel_Click1" />
だから、btnDel_Click1が起こりました。同じ結果を達成することはありません。あなたが方法を検出することで、サーバーを実行する必要がありません。
注意を払う必要があります。
もちろん、我々はまた、btn.Attribute.add()メソッドによって同様に処理することができます。
ます。https://www.cnblogs.com/TSPWater/archive/2012/06/04/2534216.htmlで再現