ASP.NET/JavaScript - 为什么不"返回错误"不能防止回发?

RPM*_*984 7 javascript asp.net postback

我觉得我已经做了很多次这种情况,而且它通常都有效,所以我显然错过了一些东西.

这是我的服务器端ASP.NET按钮:

<asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" OnClientClick="foo_Click();" />
Run Code Online (Sandbox Code Playgroud)

哪个在客户端上呈现为:

<input type="submit" name="reallylongclientid" value="Foo" onclick="foo_Click();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(reallylongclientidandpostbackoptions, false, false))" id="reallylongclientid" class="button foo">
Run Code Online (Sandbox Code Playgroud)

没有惊喜.

这是我的JavaScript函数中的惊喜:

function foo_Click() {
   return false;
}
Run Code Online (Sandbox Code Playgroud)

好的,所以还有更多的东西,但我减少它来证明一点.

当我单击该按钮时,它调用客户端函数,并返回false.

但它仍然会回发给服务器,为什么?

我基本上想在点击按钮时这样做:

  1. 做客户端验证.
  2. 如果验证通过,请回发
  3. 如果没有,请在表单上显示一些错误消息.

当然,我可以将其更改为客户端按钮(输入类型="按钮")并在我想要时手动启动回发,但我不应该这样做.或者我应该?

Pra*_*ana 18

return声明所以当你点击它return false不允许提交表格的 按钮

 <asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" 
OnClientClick="return foo_Click();" />
Run Code Online (Sandbox Code Playgroud)