jak ustawić domyślne „enter” na określonym przycisku


81

Na ContentPage znajduje się pole tekstowe. Kiedy użytkownik naciśnie Enter w tym polu tekstowym, próbuję uruchomić przycisk „Prześlij” na tej stronie ContentPage. Chciałbym odpalić zdarzenie tego konkretnego przycisku.

Zamiast tego na górze strony ze strony MasterPage znajduje się pole tekstowe i przycisk wyszukiwania, a zdarzenie tego przycisku wyszukiwania jest uruchamiane.

Jak mogę sterować uruchamianiem przycisku przesyłania tej ContentPage zamiast przycisku wyszukiwania MasterPage?

Do zarządzania treścią używam Ektron CMS.


Czy masz panel na stronie treści, może mógłbyś ustawić domyślny przycisk jako przycisk przesyłania w takim przypadku
V4Vendetta

Dzięki V4Vendetta, tak, rozwiązałem ten problem, dodając panel i ustawiając domyślny przycisk do przesłania
Ron

Odpowiedzi:


99

Najłatwiej jest umieścić pola i przycisk wewnątrz Panelu i ustawić domyślny przycisk na przycisk, który ma być aktywowany przy wejściu.

<asp:Panel ID="p" runat="server" DefaultButton="myButton">
  <%-- Text boxes here --%>
  <asp:Button ID="myButton" runat="server" />
</asp:Panel>

Zwróć uwagę, że to rozwiązanie opiera się na javascript, ponieważ onkeypress="javascript:return WebForm_FireDefaultButton(event, &#39;ctl00_MainContentPlaceHolder_btnSave&#39;)">do Twojej strony zostanie dodane coś takiego
R. Schreurs

Idealne rozwiązanie - dzięki Kirk
Sensa

1
@kirk A co, jeśli pole tekstowe znajduje się gdzieś nad przyciskiem. Mam na myśli, że nie razem, jak moglibyśmy osiągnąć to samo?
Jyotish Singh

@JyotishSingh Możesz zrobić to samo, jeśli umieścisz TextBoxi Buttonw tym samym Panel. Następnie ustaw właściwość DefaultButton .
Kirk,

36

jeśli chcesz to zrobić z kodu, użyj

Me.Form.DefaultButton = Me.btn.UniqueID

Gdzie btnjest twoja kontrola przycisków.


16

Można użyć DefaultButtonwłaściwości albo na stronie serwera formkontroli lub Panelkontroli. W twoim przypadku zgrupuj kontrolki razem w taki, Panelktóry powinien odpalić ten sam przycisk:

<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

Możesz teraz użyć właściwości UseSubmitBehavior, aby wyłączyć wszystkie przyciski, których nie chcesz uruchamiać po kliknięciu przycisku przesyłania (zapoznaj się z dokumentacją, aby uzyskać więcej informacji)

    <asp:Button ID="BtnNotToFIre" runat="server" Text="Search" UseSubmitBehavior="false" />

1
Absolutna gwiazda! To jest to, czego potrzebuję!
Stefano Magistri

I nie wymaga dodatkowych elementów html / asp.net, które mogą nie działać z układem strony.
Walter,

0
$(document).ready(function(){
    document.getElementById("text_box_id")
    .addEventListener("keyup", function(event) {
    event.preventDefault();
    if (event.keyCode === 13) {
        document.getElementById("button_id").click();
    }
    });
});

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.