0

我在 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,那么它工作正常。

我很困惑为什么它会这样。它应该像我上面写的那样行事,即在错误返回时不做任何事情,在真正返回时执行服务器端处理。

请解释一下,这也将帮助我开发进一步的应用程序。

4

2 回答 2

0

你的代码在 IE 和 FF 中对我来说都很好。

因此,如果它仍然给您带来问题,您可以使用 asp.net 验证控件寻找一种问题较少的方法。

但是,如果您仍想自己进行 javascript 验证,请使用以下命令:

http://docs.jquery.com/Plugins/Validation

您可以使用验证并按照您想要的方式进行验证。为了更好地理解它,请阅读最后给出的示例或参考:

http://jquery.bassistance.de/validate/demo/

希望这可以帮助....

于 2012-04-09T06:30:36.367 回答
-2

So perhaps there is an actual solution, but I just do this little workaround to avoid the OnClientClick property altogether.

Hide your button:

style="display:none;"

Next to your button, stick in another "fake" button:

<input type="button" value="Save" 
onclick="if (validate()) { 
document.getElementById('<%=btn_save_pi.ClientID%>').click(); }" />
于 2012-04-09T04:34:07.217 回答