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.

Ron
źródło
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>
Kościół
źródło
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.

Lester
źródło
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>
mellamokb
źródło
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" />
adinas
źródło
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();
    }
    });
});
JavaGeek
źródło
0

Microsoft mówi:

<form id="Form1"
    defaultbutton="SubmitButton"
    defaultfocus="TextBox1"
    runat="server">

wprowadź opis linku tutaj

VolkanCetinkaya
źródło