Chrome错误 asp.net 更新面板发布两次

Chrome bug asp.net updatepanel posts twice

本文关键字:布两次 更新 错误 asp net Chrome      更新时间:2023-09-26

这是我的标记:

<asp:UpdatePanel ID="updPnl" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:TextBox runat="server" ID="txtEmail" AutoPostBack="true" OnTextChanged="txtEmail_TextChanged" />
            <asp:Panel runat="server" Visible="false" ID="pnl">
                <asp:TextBox runat="server" ID="txtUname" AutoPostBack="true" OnTextChanged="txtUname_TextChanged" />
            </asp:Panel>
        </ContentTemplate>
    </asp:UpdatePanel>

这是背后的代码:

这些是隐藏代码中的事件处理程序:

 protected void txtEmail_TextChanged(object sender, EventArgs e)
        {
            pnl.Visible = true;
            updPnl.Update();
            txtUname.Focus();
        }
        protected void txtUname_TextChanged(object sender, EventArgs e)
        {
        }

如果我在文本框上按回车键txtEmail它可以在所有浏览器中正常工作,并且焦点会转到除 Chrome 以外的txtUName文本框。在调试时,我发现这种情况正在发生,因为Chrome发出了两次Ajax请求。有没有办法修复这个Chrome错误?

请注意,如果我使用 Tab 而不是输入,它在 Chrome 中也能正常工作。但是,我也需要修复输入的这个Chrome错误。

您可以在表单中输入键触发帖子,您应该阻止在 Enter 上执行提交操作(因此 Enter 键和 Tab 键将具有相同的行为)

例如,你可以用JavaScript(onkeydown)来做到这一点。

但是,我认为这里的更新面板是矫枉过正,为什么不在客户端只使用 JavaScript?

$("#txtEmail").change(function() { 
   var email = $(this).val();
   // now you can do whatever you want with the value.
});