введите ключ в 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. Это тоже не сработало.

Есть идеи, почему это не работает и что я делаю не так?


person Greg Oks    schedule 12.08.2010    source источник
comment
Возможный дубликат того, как установить "ввод" по умолчанию на определенная кнопка   -  person Tot Zam    schedule 30.12.2015
comment
Эти два вопроса настолько похожи, что я не был уверен, какой из них отметить. Тенденция StackOverflow - выбирать более четкий и лучше отформатированный вопрос, а не тот, который был опубликован первым. Однако в этом случае даже формулировка была достаточно похожей, поэтому я выбрал более популярный вопрос и тот, за который было больше голосов. Прости.   -  person Tot Zam    schedule 30.12.2015


Ответы (3)


Стандартный способ в ASP.NET контролировать, какая кнопка отправки активируется при нажатии ENTER, - это заключить элементы управления и кнопки в asp: Panel со свойством DefaultButton, установленным на правильную кнопку.

Если я правильно читаю ваш вопрос, вам просто нужно, чтобы при нажатии ENTER активировалась только одна конкретная кнопка, поэтому оберните все на своей странице в одну asp: Panel.

<asp:Panel id="pnlDefaultButton" runat="server" DefaultButton="btnOK">
    <!-- All controls here including: -->
    <asp:Button id="btnOK" runat="server" Text="OK" />
</asp:Panel>
person Jason Berkan    schedule 12.08.2010
comment
А как насчет asp: Content? Я использую мастер-страницы, и на моей странице нет ни панели, ни формы. - person Marcel; 14.09.2012
comment
@Marcel - я не совсем понимаю, что вы имеете в виду. Использование главных страниц не сильно меняет, если только кнопка не находится в одном разделе содержимого, а другие части страницы - где-то еще. В этой ситуации вы могли бы переупорядочить свой контент или изучить решение на чистом JavaScript. - person Jason Berkan; 14.09.2012
comment
@ Джейсон Беркан: Теперь мне понравилось, что описано здесь: stackoverflow.com/a/3313285/79485 - person Marcel; 15.09.2012

Панель не требуется. Просто используйте следующее:

UseSubmitBehavior="false"
person Fred    schedule 08.02.2014

Пожалуйста, используйте

idTextBoxFA.Attributes.Add("onkeypress", "javascript:var evnt = window.event";
if(evnt.keyCode==13)
{
document.getElementById('" + noEnterButton.ClientID + "').click();
}
else{};");
person Lenin Edwin    schedule 20.02.2014