【问题标题】:Page`_IsValid is set to true if OnClientClick is set如果设置了 OnClientClick,则 Page`_IsValid 设置为 true
【发布时间】:2009-07-13 06:33:02
【问题描述】:

我编写了一个将 Javascript 函数附加到表单的提交按钮的 UserControl。 Javascript 函数通过调用Page_IsValid 确保页面有效,然后继续执行一些代码。对于有问题的页面,Page_IsValid 在首次加载时设置为 true。如果我没有设置 OnClientClick,Page_IsValid 在第一次加载时会正确设置为 false。我不知道为什么 Page_IsValid 会这样,因为根本没有触发任何事件。此外,它只发生在某些页面上而不是其他页面上。似乎这只发生在将 WebForm_DoPostBackWithOptions 附加到其 onclick 事件的页面上。为什么简单地添加一个点击事件会产生如此大的不同?

这是我的代码:

服务器端:

(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(
    &quot;ctl00$wpm$CheckoutPage$ctl02$ContinueButton&quot;, &quot;&quot;, true, 
    &quot;OPC&quot;, &quot;&quot;, 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(
   &quot;ctl00$wpm$CheckoutPage$ctl02$ContinueButton&quot;, &quot;&quot;, true, 
   &quot;OPC&quot;, &quot;&quot;, false, false))" style="border-width:0px;" />
    <br /><br />
  </td>
</tr>

【问题讨论】:

  • 我的眼睛:(如果它更容易阅读,我真的很想帮助你......

标签: asp.net validation webforms


【解决方案1】:

你有

...return false; WebForm_DoPostBackWithOptions...

在您的 OnClientClick 中,因此在您的第二个示例中永远不会调用 WebForm_DoPostBackWithOptions。

【讨论】:

  • 谢谢。这肯定是个问题。现在调用了验证器,但 Is_PageValid 仍然返回 true。这是我的 JS: function disableSubmit() { if (typeof (Page_ClientValidate) == 'function') { if (Page_IsValid != null && Page_IsValid) { return DoSomething(); } 其他 { 返回真; } } 其他 { 返回 DoSomething(); } } 为什么 Is_PageValid 设置为 true?
猜你喜欢
  • 2016-12-03
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
  • 2016-12-14
  • 2013-09-09
  • 2021-08-14
相关资源
最近更新 更多