【问题标题】:Jquery Validation and asp.net UpdatePanel seem to be posting back twice?Jquery Validation 和 asp.net UpdatePanel 似乎回发了两次?
【发布时间】:2013-02-14 08:07:58
【问题描述】:

我目前有一个包含两个文本框和一个提交按钮的表单。我在两个文本框上使用 jquery 验证,但由于我使用 asp.net UpdatePanel 使用 AJAX 将数据发送到服务器,因此验证时遇到了一些问题。

发生的事情是我已经使用以下代码进行了验证:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Register.ascx.cs" Inherits="CapcoControls.Register" %>
<div id="register">    
    <form id="Form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
        </Triggers>
        <ContentTemplate>
        <asp:Panel id="pnlWrapper" ClientIDMode="Static" runat="server">
            <asp:TextBox ID="txtName" runat="server" MaxLength="200" TabIndex="1" ClientIDMode="Static" title="NAME"></asp:TextBox>
            <asp:TextBox ID="txtEmail" runat="server" MaxLength="200" TabIndex="2" ClientIDMode="Static" title="EMAIL ADDRESS"></asp:TextBox>
            <asp:ImageButton ID="btnSubmit" runat="server" 
                ImageUrl="~/images/btn_submit.png" ClientIDMode="Static" 
                onclick="btnSubmit_Click" TabIndex="3" />
        </asp:Panel>
        </ContentTemplate>        
    </asp:UpdatePanel>
    </form>
</div>
<script type="text/javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler);

    function initializeRequestHandler(sender, args) {
        if (args.get_postBackElement().id == '<%= btnSubmit.ClientID %>' && $("#Form1").valid() !== true) {
             args.set_cancel(true);
         }
     }

    $(document).ready(function () {
        $("#Form1").validate({            
            rules: {
                <%= txtName.UniqueID %>: {
                    required: true,
                    checkDefaultValue: true
                },                
                <%= txtEmail.UniqueID %>: {
                    required: true,
                    email: true,
                    checkDefaultValue: true
                }
            },
            messages: { },
            errorPlacement: function(error, element) { }            
        });        
    });        
</script>

问题是一旦用户输入有效数据,服务器端点击事件就会被调用两次,但我不知道为什么?有人知道吗?

我的直觉是这与我的 jquery validate 即有关。该按钮默认发回,然后由于 jquery 验证,我以某种方式再次提交表单。

有人知道我在哪里出错了吗?

谢谢

【问题讨论】:

  • 你有没有解决这个问题???
  • 我已经有一段时间没有遇到这个问题了,但我隐约记得这是因为我在某处有重复的代码,并且触发了两次。抱歉,我无法提供更多帮助,但我无法再访问代码了..
  • 我在单击按钮时使用它,如果我不使用 UpdatePanel,它工作正常并且不会触发后端代码。但是如果我将它与 UpdatePanel 一起使用,那么它也会触发后端代码。你能告诉我如何解决这个问题吗???

标签: jquery asp.net


【解决方案1】:

尝试将所有内容放入pageLoad
链接:http://encosia.com/document-ready-and-pageload-are-not-the-same/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2022-12-24
    • 2010-12-05
    • 2013-02-04
    • 2021-01-26
    • 1970-01-01
    相关资源
    最近更新 更多