В моей форме есть несколько текстовых полей и кнопок.
Допустим, txtBox1 находится рядом с btnSubmit1, txtBox2 находится рядом с btnSubmit2, txtBox3 находится рядом с btnSubmit3.
Как я могу установить фокус на btnSubmit3, когда пользователь начинает что-то вводить в txtBox3. Это означает ... если пользователь вводит текст в текстовое поле, программа будет знать, какую кнопку запускать, когда пользователь нажимает клавишу ввода.
Вы не можете установить фокус, когда начинаете печатать - иначе вы не сможете продолжать печатать. Вам нужно изменить кнопку по умолчанию для страницы.
Конечно, это имеет смысл ..... но как мне это сделать тогда, когда все 3 моих текстовых поля и кнопки находятся на одной странице? Мне нужно знать, в каком текстовом поле установить фокус в зависимости от того, где находится пользователь на текущей странице.





Если вы используете панель, у вас должна быть возможность установить кнопку по умолчанию. Я не уверен, что это: приложение для выигрышных форм или приложение для веб-форм, но вот как вы должны делать это с веб-формами:
<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>
Используйте JavaScript и добавьте размытие для этих текстовых полей ...
Пример:
<asp:TextBox ID = "t1" runat = "server" onblur = "CheckIfTextBox1ShouldFocusOnButton1();" />
:)
МММ, что я должен поместить в свой CheckIfTextBox1ShouldFocusOnButton1 ();
Я видел, как это делается вот так, но не просите меня объяснить это или сказать, какие плюсы и минусы по сравнению с любым другим методом. Просто подумал, что опубликую его, если он будет вам полезен.
// 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));
Это простое решение, если вы знаете, что единственный используемый браузер - это 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? Я знаю, что должен оставить ";" из.
Я использую код ASP.NET 2.0 и VB.net