使用者習慣在輸入完畢按 Enter 送出表單,ASP.NET 2.0 內建 DefaultButton 屬性完美解決此需求,無需 JavaScript。
<form> 層級設定 defaultbutton:整張頁面的預設送出按鈕<asp:Panel> 設定 defaultbutton:限定該面板內輸入框的 Enter 行為<form id="form1" runat="server" defaultbutton="btn1">
<asp:TextBox ID="txt" runat="server" />
<asp:Button ID="Button5" Text="Cancel" OnClick="Button5_Click" />
<asp:Button ID="btn1" Text="Submit" OnClick="btn1_Click" />
<asp:Panel ID="pnl1" runat="server" defaultbutton="Button1">
<asp:TextBox ID="TextBox1" />
<asp:TextBox ID="TextBox2" />
<asp:Button ID="Button1" Text="Button1" OnClick="Button1_Click" />
</asp:Panel>
<asp:Panel ID="Panel1" runat="server" defaultbutton="Button2">
<asp:TextBox ID="TextBox3" />
<asp:TextBox ID="TextBox4" />
<asp:Button ID="Button2" Text="Button2" OnClick="Button2_Click" />
</asp:Panel>
<!-- Panel2、Panel3 同理 -->
</form>
protected void Button1_Click(object sender, EventArgs e) { Response.Write(Button1.Text); }
protected void Button2_Click(object sender, EventArgs e) { Response.Write(Button2.Text); }
protected void Button3_Click(object sender, EventArgs e) { Response.Write(Button3.Text); }
protected void Button4_Click(object sender, EventArgs e) { Response.Write(Button4.Text); }
protected void btn1_Click(object sender, EventArgs e) { Response.Write(btn1.Text); }
protected void Button5_Click(object sender, EventArgs e) { Response.Write(Button5.Text); }
測試時在不同面板的文字方塊按 Enter,觀察觸發哪個按鈕事件,即可驗證範圍控制邏輯。