我在ASP.NET中创建了一个应用程序,并使用JavaScript来验证字段是否为空;调用ASP.NET按钮控件的onClientClick事件的验证函数,并使用onClick事件进行服务器端处理。
这里我附上了javascript:validation函数
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控件
下调用该函数<asp:Button ID="btn_save_pi" runat="server"
Text="Save" OnClientClick="return validate()" OnClick="btn_save_pi_click" />
现在我观察到,当验证函数返回false时,它执行服务器端方法,即onclick事件,但是返回true时它什么都不做。但是当我切换返回值时,意味着空字段返回true而非空字段返回false,那么它工作正常。
我为此感到困惑,为什么它就像这样。它假设像我上面写的那样行动,即在错误的返回和真正的返回执行服务器端处理时什么都不做。
请解释一下,这也有助于我开发更多应用程序。
答案 0 :(得分:0)
在IE和FF中,您的代码对我来说非常好。
因此,如果它仍然给你带来问题,你可以使用asp.net验证控件来解决问题较少的方法。
但是如果您仍想使用自己的javascript验证,请使用:
http://docs.jquery.com/Plugins/Validation
您可以通过验证并按照自己的方式进行验证。 为了更好地理解它,请仔细阅读最后给出的例子或参考:
http://jquery.bassistance.de/validate/demo/
希望这会有所帮助......
答案 1 :(得分:-2)
所以也许有一个实际的解决方案,但我只是做了一点解决方法来完全避免使用OnClientClick属性。
隐藏按钮:
style="display:none;"
在按钮旁边,粘贴另一个“假”按钮:
<input type="button" value="Save"
onclick="if (validate()) {
document.getElementById('<%=btn_save_pi.ClientID%>').click(); }" />