Введите ключ в неправильной кнопке asp.net
У меня есть текстовое поле и много кнопок. Когда пользователь находится в некотором текстовом поле и нажимает клавишу "enter", тогда появляется событие с нажатием кнопки. Я читал в Интернете, что есть некоторые проблемы с ключом "enter", и я пробовал несколько решений, но все же он всегда входит в это событие кнопки (эта кнопка является первой кнопкой на странице).
Я попытался создать кнопку, которая ничего не делает и записывает это в page_load:
idTextBoxFA.Attributes.Add("onkeydown","if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementBtId('" + noEnterButton.UniqueID + "').click();return false;}} else {return true}; ");
Все элементы управления моей страницей находятся в форме, и я попытался присвоить форму "defaultButton" свойства той кнопке, которую я создал. Это тоже не работало.
Любая идея, почему это не работает и что я делаю неправильно?
Ответы
Ответ 1
Стандартный способ в ASP.NET для управления кнопкой отправки активируется при нажатии ENTER - это обернуть элементы управления и кнопки в панели asp: Panel, где свойство DefaultButton установлено на правильную кнопку.
Если я правильно читаю ваш вопрос, вы просто хотите, чтобы одна кнопка была активирована, когда нажата клавиша ENTER, поэтому оберните все на своей странице в одиночной панели ASP.
<asp:Panel id="pnlDefaultButton" runat="server" DefaultButton="btnOK">
<!-- All controls here including: -->
<asp:Button id="btnOK" runat="server" Text="OK" />
</asp:Panel>
Ответ 2
Панель не нужна.
Просто используйте следующее:
UseSubmitBehavior="false"
Ответ 3
Пожалуйста, используйте
idTextBoxFA.Attributes.Add("onkeypress", "javascript:var evnt = window.event";
if(evnt.keyCode==13)
{
document.getElementById('" + noEnterButton.ClientID + "').click();
}
else{};");