ASPX Textbox: выполнить метод при нажатии клавиши возврата
Вопрос
У меня есть окно поиска, в котором нет кнопки отправки, мне нужно нажать Enter, а затем выполнить метод, как мне это сделать?
Решение
вы также можете сделать что-то простое с CSS:
<asp:Panel DefaultButton="myButton" runat="server">
<asp:TextBox ID="myTextBox" runat="server" />
<asp:Button ID="myButton" runat="server" onclick="myButton_Click" style="display: none; " />
</asp:Panel>
Панель может или не может быть необходимой в зависимости от вашей реализации и окружающих элементов управления, но это работает и делает обратную передачу для меня.
Другие советы
Вы можете добавить скрытую кнопку на страницу и подключить свой метод к событию нажатия этой кнопки. Затем добавьте небольшой кусочек JavaScript, чтобы вызвать действие обратной передачи этой кнопки при нажатии клавиши ввода внутри текстового поля.
this.myTextBox.Attributes.Add(
"onkeydown",
"return keyDownHandler(13, 'javascript:"
+ this.Page.ClientScript.GetPostBackEventReference(this.myButton, string.Empty).Replace("'", "%27")
+ "', event);");
(Вы также можете заменить жестко закодированные 13 на Windows.Forms.Keys . Введите, если вы предпочитаете более легкую для чтения версию.)
Где keyDownHandler - это функция JavaScript, подобная этой:
function keyDownHandler(iKeyCode, sFunc, e) {
if (e == null) {
e = window.event;
}
if (e.keyCode == iKeyCode) {
eval(unescape(sFunc)); return false;
}
}
Обратите внимание, это основано на реализации DotNetNuke Веб-утилита ClientAPI .
Используйте событие TextChanged и установите для свойства AutoPostBack значение true.