【问题标题】:Unusual Javascript Behaviour in ASP.NETASP.NET 中的异常 Javascript 行为
【发布时间】: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 控件中(如果我没记错的话)

标签: asp.net ajax


【解决方案1】:

您的代码在 IE 和 FF 中都非常适合我。

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

但如果您仍想自己进行 javascript 验证,请使用:

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

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

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

希望这会有所帮助....

【讨论】:

    【解决方案2】:

    所以也许有一个实际的解决方案,但我只是做了这个小解决方法来完全避免 OnClientClick 属性。

    隐藏您的按钮:

    style="display:none;"
    

    在您的按钮旁边,插入另一个“假”按钮:

    <input type="button" value="Save" 
    onclick="if (validate()) { 
    document.getElementById('<%=btn_save_pi.ClientID%>').click(); }" />
    

    【讨论】:

    • 可怕的答案。可能的垃圾邮件链接,启动。
    • 好的,然后让 OnClientClick 属性为这个家伙工作。它不起作用。答案是不要使用它。
    猜你喜欢
    • 2017-01-28
    • 2019-10-11
    • 2014-06-18
    • 2014-02-21
    • 2014-07-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多