【发布时间】:2012-04-09 04:08:40
【问题描述】:
我在 ASP.NET 中创建了一个应用程序,并使用 JavaScript 来验证字段是否为空;调用 ASP.NET 按钮控件的 onClientClick 事件验证函数,并使用 onClick 事件进行服务器端处理。
这里我附上 javascript: 验证函数
function validate() {
if (document.getElementById("<%=txt_msn.ClientID%>").value == "") {
alert("Membership number can not be blank; Fill all fields marked as *");
document.getElementById("<%=txt_msn.ClientID%>").focus();
return false;
}
return true;
}
这里我在 ASP.NET Control 下调用那个函数
<asp:Button ID="btn_save_pi" runat="server"
Text="Save" OnClientClick="return validate()" OnClick="btn_save_pi_click" />
现在我观察到,当验证函数返回 false 时,它会执行服务器端方法,即 onclick 事件,但在返回 true 时它什么也不做。但是当我切换返回值时,意味着在空字段上返回true,在非空字段上返回false,那么它就可以正常工作了。
我很困惑为什么它会这样。它应该像我上面写的那样行事,即在错误返回时什么都不做,在真正返回时执行服务器端处理。
请解释一下,这也将有助于我开发进一步的应用程序。
【问题讨论】:
-
为什么不直接使用 .net 中的验证控件?
-
可以把渲染好的html放上去吗?
-
我支持其他 cmets 使用 ASP.NET 内置的验证机制。它会自动导致您寻求的行为,您可以将
OnClientClick用于其他目的。如果您有用于验证的自定义 js 逻辑,您可以通过其ClientValidationFunction将其挂在CustomValidator控件中(如果我没记错的话)