我编写了一个UserControl,它将Javascript函数附加到表单的提交按钮。 Javascript函数通过调用Page_IsValid
确保页面有效,然后继续执行一些代码。对于有问题的页面,Page_IsValid
在首次加载时设置为true。如果我没有设置OnClientClick,则在第一次加载时Page_IsValid
被正确设置为false。我无法弄清楚为什么Page_IsValid会以这种方式运行,因为根本没有事件被触发。此外,它只发生在某些页面而不是其他页面上。这似乎只发生在其onclick事件附加了WebForm_DoPostBackWithOptions的页面上。为什么简单地添加点击事件会产生这样的差异?
这是我的代码:
服务器端:
(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:
<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>
答案 0 :(得分:0)
你有
...return false; WebForm_DoPostBackWithOptions...
在您的OnClientClick中,因此在您的第二个示例中永远不会调用WebForm_DoPostBackWithOptions。