3

対応する 2 つのボタンを持つ 2 つの TextBox があります。TextBox にフォーカスがあり、ユーザーが Enter キーを押すと、対応する Button のコード ビハインド イベント ハンドラーがクリックされたかのように実行されるようにします。これはサンプルコードです:

Aspx:

<asp:TextBox ID="TextBox1" runat="server" onkeyup="myfunction1(event)"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button 1" usesubmitbehavior="false" />

<asp:TextBox ID="TextBox2" runat="server" onkeyup="myfunction2(event)"></asp:TextBox>
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button 2" usesubmitbehavior="false" />

<asp:Label ID="Label1" runat="server"></asp:Label>

<script type="text/javascript">
    function myfunction1(e) {
        if (e.keyCode == 13)
            document.getElementById('<%= Button1.ClientID %>').click();
    }
    function myfunction2(e) {
        if (e.keyCode == 13)
            document.getElementById('<%= Button2.ClientID %>').click();
    }
</script>

コードビハインド:

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = "Button 1 was clicked";
}

protected void Button2_Click(object sender, EventArgs e)
{
    Label1.Text = "Button 2 was clicked";
}

しかし、いずれかの TextBox で Enter キーを押すと、常にButton1コード ビハインド イベント ハンドラが実行されます。ボタンをクリックすると、明らかに期待どおりに機能します。

私は何が欠けていますか?

4

3 に答える 3

2

ASPボタンは、デフォルトで送信ボタンとしてレンダリングされます。フォーム要素にフォーカスがある場合のEnterのデフォルトのアクションkeypress(後keydown、前keyup)は、フォームを送信することです。HTMLフォームに複数の送信ボタンが含まれている場合、最初のボタンがデフォルトの送信ボタンです。

これらすべてをまとめると、Enterキーを使用してkeypress(覚えておいてください、後keydown、前にkeyup)、フォームはデフォルトの送信ボタン(Button1)を介して送信されます。

問題を解決するための多くのオプションがあります。input type="button"ASPボタンの代わりに、runat=serverそこからクリックイベントを処理することをお勧めします。

関連:異なるボタンタイプのAspボタン

于 2012-07-13T23:47:13.937 に答える
0

セットをパネル コントロールに配置し、パネルの DefaultButton プロパティを設定することで、要件を達成できます。

例:

<asp:Panel ID="Panel1" runat="server" DefaultButton="Button1" Height="72px">

   <asp:TextBox ID="TextBox1" runat="server" onkeyup="myfunction1()"></asp:TextBox>
   <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button 1" />

   <asp:TextBox ID="TextBox2" runat="server" onkeyup="myfunction2()"></asp:TextBox>
   <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button 2" />

</asp:Panel>
于 2012-07-14T00:53:36.237 に答える
0

ButtonUseSubmitBehaviorを to に設定するのfalseが最も簡単な解決策です。@jbabey によるリンクこの回答から。

于 2012-07-16T17:29:37.643 に答える