如何阻止页面加载JavaScript

时间:2013-07-24 21:13:38

标签: javascript jquery html asp.net postbackurl

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

有什么建议吗?

编辑: 按钮:

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

DoLogic:

function DoLogic() {

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

ValidateForm:

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

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

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

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

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

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

  4. 您可以在此处详细了解:


    详细说明。 。

    如果您在代码执行完毕后尝试将用户发送到其他站点,则PostBackUrl属性不能以您向我们展示的方式使用。例如,在您的示例中,即使它确实有效,用户也可能会看到:

    enter image description here