【发布时间】:2012-07-13 23:24:29
【问题描述】:
我有两个文本框和对应的两个按钮。我希望当 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";
}
但是当我在任何 TextBoxes 中按 Enter 时,它总是在事件处理程序后面执行 Button1 代码。如果我单击按钮,它显然会按预期工作。
我错过了什么?
【问题讨论】:
-
Enter以外的键呢? Enter 将提交表单,asp:buttons 呈现为
<input type="submit" .../>。由于Textbox1是第一个,它正在获取提交事件。 -
@bhamlin 是的,它可以与其他键一起正常工作。
-
@bhamlin 所以解决方案是不使用 asp:buttons 而是使用 html 按钮?发布它,如果这是我会接受的最佳解决方案。
-
为什么只使用 TextBox 事件 onChange?不? msdn.microsoft.com/en-us/library/…
标签: javascript asp.net events