我感觉我已经做过这种场景很多次了,并且通常都有效,所以我显然漏掉了什么。
这是我的服务器端ASP.NET按钮:
<asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" OnClientClick="foo_Click();" />
这将在客户端呈现为:
<input type="submit" name="reallylongclientid" value="Foo" onclick="foo_Click();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(reallylongclientidandpostbackoptions, false, false))" id="reallylongclientid" class="button foo">
毫不意外。
这里有个惊喜,就在我的JavaScript函数中:
function foo_Click() {
return false;
}
好的,事实上这不是全部,但我简化了内容以证明一个观点。
当我点击按钮时,它调用客户端函数并返回false。
但它仍然会提交到服务器,为什么?
基本上,我想在点击按钮时执行以下操作:
- 进行客户端验证。
- 如果验证通过,则提交表单。
- 如果未通过,则在表单上显示一些错误消息。
当然,我可以将其更改为客户端按钮(input type="button"),并在需要时手动启动postback,但我不应该这样做。或者我应该吗?
Boolean
构造函数和new
关键字创建一个Boolean
对象包装器,在JavaScript中,任何对象在布尔上下文中都被认为是真实的。例如:!!new Boolean(false)
==>true
。我建议您直接使用布尔值true
或false
字面量,它们代表原始值... - Christian C. Salvadó