将焦点设置为文本框中的按钮?

时间:2008-11-13 09:52:43

标签: c# asp.net vb.net

我的表单上有几个文本框和按钮。

让我们说txtBox1在btnSubmit1旁边, txtBox2在btnSubmit2旁边, txtBox3位于btnSubmit3旁边。

当用户开始在txtBox3中键入内容时,如何将焦点设置为btnSubmit3。 含义.....如果用户在文本框中输入,当用户按下回车键时,程序将知道要触发的按钮。

4 个答案:

答案 0 :(得分:6)

如果您使用面板,则应该能够设置默认按钮。我不确定它是win表单应用程序还是Web表单应用程序,但这是你应该如何使用Web表单:

<asp:Panel id="panel1" runat="server" DefaultButton="Button1">
   <asp:TextBox id="textbox1" runat="server" />
   <asp:Button id="Button1" runat="server" Text="Button 1" />
</asp:Panel>

<asp:Panel id="panel2" runat="server" DefaultButton="Button2">
   <asp:TextBox id="textbox2" runat="server" />
   <asp:Button id="Button2" runat="server" Text="Button 2" />
</asp:Panel>

<asp:Panel id="panel3" runat="server" DefaultButton="Button3">
   <asp:TextBox id="textbox3" runat="server" />
   <asp:Button id="Button3" runat="server" Text="Button 3" />
</asp:Panel>

答案 1 :(得分:0)

使用JavaScript并为那些TextBoxes添加“onblur”......

示例:

<asp:TextBox ID="t1" runat="server" onblur="CheckIfTextBox1ShouldFocusOnButton1();" />

:)

答案 2 :(得分:0)

我已经看到它是这样做的,但不要求我解释它或说出任何其他方法的优点和缺点。只是想我会发布它,以防它对你有用。

// Fires a particular event when enter is pressed within a textbox.
function FireButtonOnEnter(controlID)
{
    if((event.which ? event.which : event.keyCode) == 13)
    {
        window.event.returnValue = false;
        window.event.cancelBubble = true;
        document.getElementById(controlID).click();
    }
}

通过为文本框添加以下内容来调用它...

txtOrgName.Attributes.Add("OnKeyDown", String.Format("return FireButtonOnEnter('{0}');", btnOrgNameGo.ID));

答案 3 :(得分:0)

如果您知道正在使用的唯一浏览器是IE,这是一个简单的解决方案。

您只需要添加到页面加载

txtBox1.Attributes.Add("onKeyPress", "javascript:if (event.keyCode == 13)
__doPostBack('" + btnSubmit1.UniqueID + "','')");

txtBox2.Attributes.Add("onKeyPress", "javascript:if (event.keyCode == 13)
__doPostBack('" + btnSubmit2.UniqueID + "','')");

txtBox3.Attributes.Add("onKeyPress", "javascript:if (event.keyCode == 13) 
__doPostBack('" + btnSubmit3.UniqueID + "','')");

这只适用于IE的原因是它使用了在Firefox中不起作用的Javascript“事件”关键字。