как установить "ввод" по умолчанию для определенной кнопки

81

На ContentPage есть текстовое поле. Когда пользователь нажимает Enter в этом текстовом поле, я пытаюсь запустить кнопку «Отправить» на этой ContentPage. Я хотел бы запустить событие этой конкретной кнопки.

Вместо этого есть текстовое поле поиска и кнопка в верхней части страницы из MasterPage, и событие этой кнопки поиска запускается.

Как я могу управлять запуском этой кнопки отправки ContentPage вместо кнопки поиска MasterPage?

Я использую Ektron CMS для управления контентом.

Рон
источник
У вас есть панель на странице содержимого, может быть, вы могли бы установить кнопку по умолчанию в качестве отправки в этом случае
V4Vendetta
Спасибо, V4Vendetta, да, я решил эту проблему, добавив панель и установив кнопку по умолчанию для отправки
Рон

Ответы:

99

Самый простой способ - поместить поля и кнопку внутри панели и установить кнопку по умолчанию на кнопку, которую вы хотите активировать при входе.

<asp:Panel ID="p" runat="server" DefaultButton="myButton">
  <%-- Text boxes here --%>
  <asp:Button ID="myButton" runat="server" />
</asp:Panel>
Кирк
источник
Обратите внимание, что это решение основано на javascript, так как onkeypress="javascript:return WebForm_FireDefaultButton(event, &#39;ctl00_MainContentPlaceHolder_btnSave&#39;)">на вашу страницу добавлено что-то вроде
Р. Шрерс,
Идеальное решение - Спасибо, Кирк
Sensa
1
@kirk Что, если текстовое поле находится где-то над кнопкой, я имею в виду не вместе, тогда как мы могли бы добиться того же?
Джйотиш Сингх
@JyotishSingh Вы можете сделать то же самое, если поместите TextBoxи Buttonв одно и то же Panel. Затем установите свойство DefaultButton .
Кирк
36

если вам нужно сделать это из кода, используйте

Me.Form.DefaultButton = Me.btn.UniqueID

Где btnтвоя кнопка управления.

Лестер
источник
16

Вы можете использовать DefaultButtonсвойство как в formэлементе Panelуправления на стороне сервера, так и в элементе управления. В вашем случае сгруппируйте элементы управления вместе Panel, чтобы активировать одну и ту же кнопку:

<asp:Panel ID="SearchBox" runat="server" DefaultButton="BtnSearch">
    ...
    <asp:Button ID="BtnSearch" runat="server" Text="Search!" />
</asp:Panel>
....
<asp:Panel ID="UserPanel" runat="server" DefaultButton="BtnUserSubmit">
    ...
    <asp:Button ID="BtnUserSubmit" runat="server" Text="Submit" />
</asp:Panel>
мелламокб
источник
6

Теперь вы можете использовать свойство UseSubmitBehavior, чтобы отключить все кнопки, которые вы не хотите активировать при нажатии кнопки отправки (дополнительные сведения см. В документации)

    <asp:Button ID="BtnNotToFIre" runat="server" Text="Search" UseSubmitBehavior="false" />
Adinas
источник
1
Абсолютная звезда! Это то что мне нужно!
Стефано Магистри
И это не требует дополнительных элементов html / asp.net, которые могут не работать с макетом страницы.
Уолтер
0
$(document).ready(function(){
    document.getElementById("text_box_id")
    .addEventListener("keyup", function(event) {
    event.preventDefault();
    if (event.keyCode === 13) {
        document.getElementById("button_id").click();
    }
    });
});
JavaGeek
источник