我刚刚创建了一个新页面,并在其上仅放置了 4 个基本控件,如下所示:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" DefaultButton="Button1">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:Button ID="Button1"
runat="server" Text="Button" />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
然后加载页面并执行以下步骤:
在文本框中单击
按 ENTER 键 - 这将导致单击按钮,因为它是面板的默认按钮
在文本框中单击返回
再次按 ENTER 键
此时我无法在文本框中输入任何内容。
我相信它一定与 Panel.DefaultButton 创建的按键处理程序有关。例如,如果它总是返回 false,那么所有的击键都会被忽略。
这仅在不处于兼容模式时适用于 IE8。在兼容模式下在 Chrome、FireFox 和 IE8 中运行良好。
这似乎是开发人员会做的常见事情,在更新面板中有一个文本框和按钮,并设置了一个默认按钮......但是,我还没有找到很多讨论这个问题的主题,而且没有一个解决方案看起来很强大全部。我不会想到这么基本的东西,我需要求助于黑客,比如有一个计时器,可以将焦点更改为另一个控件,然后再返回。
有没有人对此有强大的解决方案? 我正在使用 ASP.NET 3.5,但现在升级到 4.0 对我来说并不容易。