2

我有一个带有 PostBackUrl 的按钮。我还为其 onclientclick 方法分配了一个函数,其中编写了一些页面逻辑,包括一些验证规则。如果整个页面无效,则此方法返回 False 但我无法停止页面。我试过 document.execCommand('Close') 和 Window.Stop() 但没有成功。

有什么建议么?

编辑:按钮:

<asp:Button ID="btnSubmit" runat="server" OnClientClick="return DoLogic()"  PostBackUrl="http://google.com" Class="btn_submit"/>

逻辑:

function DoLogic() {

if (ValidateForm()) {
blah blah blah
return true;
}
else {
alert("Has Error");
return false;
}

验证表格:

function ValidateForm(){
if (haserror)  
{  
return false; 
} 
return true; 
}
4

2 回答 2

3

您可以.preventDefault()在您的活动中使用方法。单击按钮时,这将停止页面加载的默认操作。

http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-cancelation

你也可以return false;在你的DoLogic(). 这也将停止页面加载。

onclientclick="return DoLogic()"

然后在你的函数中:

function DoLogic(){
    //blah blah blah
    return false;
}

更新

如果您正在执行所有这些操作并且仍然遇到问题,请尝试将其添加到您的按钮中:

onclick="javascript:return false"

从 OP 更新

您的代码不起作用,因为在 if 语句中return true;,只有当狗屎击中风扇(即错误)时才会返回您和 false。您需要每次都返回 false 。或者使用.preventDefault()我之前提到的那种。

于 2013-07-24T21:16:52.197 回答
1

我读过 PostBackUrl 会给你带来麻烦,尤其是在这种情况下,因为看起来你用错了。我想你可能对 PostBackUrl 的作用感到困惑。它是跨页发布中使用的属性。如果您在回发完成后尝试将用户重定向到不同的页面,请Response.Redirect()在代码隐藏中使用或改用<asp:HyperLink>标签。

应该没有你不能使用的理由Response.Redirect()。只需将其添加到代码隐藏中脚本的末尾即可。如果客户端验证返回 false,则生命周期无论如何都不会到达服务器端。

总而言之,看起来您在该控件中至少有三个错误:

  1. 你肯定需要属性的return一部分。OnClientClick
  2. 您需要将Class属性更改为CssClass.
  3. 您可能需要使用PostBackUrl该按钮以外的其他内容。

你可以在这里读更多关于它的内容:


详细说明 。. .

如果您在代码执行完成后尝试将用户发送到另一个站点,则PostBackUrl无法按照您向我们展示的方式使用该属性。例如,在您的示例中,即使它确实有效,用户也可能会看到:

在此处输入图像描述

于 2013-07-24T21:46:28.087 回答