新しいページを作成し、次のように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が作成するkeypressハンドラーと関係があるに違いないと思います。たとえば、常にfalseを返す場合は、すべてのキーストロークが無視されるようになります。
これは、互換モードでない場合にのみIE8で発生します。互換モードのChrome、FireFox、IE8で正常に動作します。
これは、開発者が行う一般的なことのようです。更新パネル内にテキストボックスとボタンがあり、デフォルトのボタンが設定されています...それでも、この問題について説明しているトピックはあまり多くありません。すべて。フォーカスを別のコントロールに変更してから元に戻すタイマーを設定するなどのハックに頼る必要があるほど基本的なことは考えていません。
誰かがこれに対する強力な修正を持っていますか? ASP.NET 3.5を使用していますが、現在4.0にアップグレードするのは簡単ではありません。