【问题标题】:submit forms in .NET在 .NET 中提交表单
【发布时间】:2009-05-01 20:49:58
【问题描述】:

我有一个带有提交按钮的 .NET 页面。我正在使用客户端验证来验证表单元素。

var register = $('#<%= Register.ClientId %>');
register.click(function(){
    validation.init();
    return false;
});

现在,顶部的 return false 会阻止表单在单击时提交到服务器。在任何其他语言中,一旦我进行了验证,我就会调用 form submit 方法 并且它会起作用。不知何故,这似乎在 .NET 中不起作用。我不确定这是否是因为表单标签本身包裹了整个页面内容。

【问题讨论】:

    标签: .net javascript jquery


    【解决方案1】:

    你应该使用一个 ASP.NET CustomValidator 来做这个钩子,它会自动连接到 form.submit 上运行。

    过时的 VB 教程,但您可以了解它的要点:http://www.4guysfromrolla.com/articles/073102-1.aspx

    【讨论】:

    • 还有其他方法吗?我对自定义验证器出现的额外空格/html 不是很着迷。
    • 将 CustomValidator 设置为 display='dynamic' 并且不会收到任何错误消息。然后只需在 customvalidator 的 JS 函数中处理您的错误显示/隐藏。
    【解决方案2】:

    不要总是返回 false,而是执行验证,然后根据结果返回 true 或 false。

    【讨论】:

    • 我试过了,表单无论如何都会提交 - 所以我不得不在早些时候强制返回 false。
    【解决方案3】:

    form.submit() 可以在 ASP.NET 中正常工作 - 您还有其他问题。发布更多代码,我们将看看它是什么......

    <script runat="server">
        protected override void OnLoad(EventArgs e) {
            base.OnLoad(e);
            if (IsPostBack) {
                ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('PostBack!');", true);
            }      
        }
    </script>
    
    <body>
        <script type="text/javascript">
            function OnClick() {
                window.setTimeout(function() { form1.submit(); }, 5000);
                return false;
            }
        </script>
        <form id="form1" runat="server">
            <input type="submit" onclick="return OnClick();" />      
        </form>
    </body>    
    

    【讨论】:

      【解决方案4】:

      我一直在做这种事情。特别是如果我有一些复杂的验证,我不想搞砸验证器控件。 document.forms[0].submit();

      这对我来说每次都有效。这不适合你吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-22
        • 2020-03-20
        • 2017-06-27
        • 2017-12-30
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多