【问题标题】:Setting focus to a button from text box?将焦点设置到文本框中的按钮?
【发布时间】:2008-11-13 09:52:42
【问题描述】:

我的表单上有一些文本框和按钮。

假设 txtBox1 在 btnSubmit1 旁边, txtBox2 在 btnSubmit2 旁边, txtBox3 在 btnSubmit3 旁边。

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

【问题讨论】:

  • 我正在使用 ASP.NET 2.0 和 VB.net 代码
  • 开始输入时不能设置焦点 - 否则将无法继续输入。您需要更改页面的默认按钮。
  • 当然这是有道理的.....但是当我的所有 3 个文本框和按钮都在 1 页上时,我该怎么做呢?我需要知道根据用户在当前页面上的位置设置焦点的文本框。

标签: c# asp.net vb.net


【解决方案1】:

如果你使用面板,你应该可以设置一个默认按钮。我不确定它是 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>

【讨论】:

    【解决方案2】:

    使用 JavaScript 并为这些文本框添加“onblur”...

    例子:

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

    :)

    【讨论】:

    • 嗯,我必须在我的 CheckIfTextBox1ShouldFocusOnButton1() 中放置什么;
    【解决方案3】:

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

    // 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));
    

    【讨论】:

      【解决方案4】:

      如果您知道唯一使用的浏览器是 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 中起作用的原因是它使用了 Javascript 的“事件”关键字,而在 Firefox 中不起作用。

      【讨论】:

      • 嗨,这不起作用.....它与 VB.NET 的代码相同吗?我知道我必须离开“;”出来。
      猜你喜欢
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多