Установить фокус на кнопку из текстового поля? - PullRequest
1 голос
/ 13 ноября 2008

В моей форме есть несколько текстовых полей и кнопок.

Допустим, txtBox1 находится рядом с btnSubmit1, txtBox2 находится рядом с btnSubmit2, txtBox3 находится рядом с btnSubmit3.

Как мне установить фокус на btnSubmit3, когда пользователь начинает что-то печатать в txtBox3. Значение ..... если пользователь вводит текстовое поле, программа будет знать, какую кнопку нажимать, когда пользователь нажимает клавишу ввода.

Ответы [ 4 ]

6 голосов
/ 13 ноября 2008

Если вы используете панель, вы сможете установить кнопку по умолчанию. Я не уверен, является ли это приложением win forms или приложением веб-форм, но вот как вы должны делать это с веб-формами:

<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>
0 голосов
/ 14 ноября 2008

Это простое решение, если вы знаете, что единственным используемым браузером является 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.

0 голосов
/ 13 ноября 2008

Я видел, как это было сделано, но не просите меня объяснить это или сказать, какие плюсы и минусы есть у любого другого метода. Просто подумал, что опубликую, если это будет полезно для вас.

// 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));
0 голосов
/ 13 ноября 2008

Используйте JavaScript и добавьте «onblur» для этих TextBoxes ...

Пример:

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

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...