Javascript関数をフォームの送信ボタンに付加するUserControlを作成しました。 Javascript関数は、Page_IsValid
を呼び出してページが有効であることを確認してから、コードを実行します。問題のあるページでは、最初の読み込み時にPage_IsValid
がtrueに設定されます。 OnClientClickを設定しないと、Page_IsValid
は最初の読み込み時に正しくfalseに設定されます。 Page_IsValidがこのように動作している理由を把握することはできません。なぜなら、イベントはまったく実行されないからです。また、一部のページでのみ発生し、他のページでは発生しません。これは、WebForm_DoPostBackWithOptionsがonclickイベントに添付されているページでのみ発生しているようです。なぜクリックイベントを追加するだけの違いがあるのでしょうか?OnClientClickが設定されている場合、Page`_IsValidがtrueに設定されます。
ここに私のコードです:
サーバー側:
(control as Control).OnClientClick = "disableSubmit(); return false;";
は、ここで生成されますコードです:OnClickEVentなし
:
<input type="image" name="ctl00$wpm$CheckoutPage$ctl02$ContinueButton"
id="ctl00_wpm_CheckoutPage_ctl02_ContinueButton"
src="../images/continue.gif" alt="Continue"
onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(
"ctl00$wpm$CheckoutPage$ctl02$ContinueButton", "", true,
"OPC", "", false, false))" style="border-width:0px;" />
<br /><br />
</td>
OnClickEvent付き
:WebForm_DoPostBackWithOptionsはあなたの第二の例で呼び出されることはありませんので、
<tr id="ctl00_wpm_CheckoutPage_ctl02_trContinue">
<td valign="top">
<div id="ctl00_wpm_CheckoutPage_ctl02_AddressValidationSummary"
class="validationSummary" style="color:Red;display:none;"></div>
<br />
<input type="image" name="ctl00$wpm$CheckoutPage$ctl02$ContinueButton"
id="ctl00_wpm_CheckoutPage_ctl02_ContinueButton" src="../images/continue.gif"
alt="Continue" onclick="disableSubmit();
return false;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(
"ctl00$wpm$CheckoutPage$ctl02$ContinueButton", "", true,
"OPC", "", false, false))" style="border-width:0px;" />
<br /><br />
</td>
</tr>
私の目:(読みやすくすると助けたいと思っています... – Amadeus45