So legen Sie eine Standardeinstellung für eine bestimmte Schaltfläche fest

81

Auf einer ContentPage befindet sich ein Textfeld. Wenn der Benutzer in diesem Textfeld die Eingabetaste drückt, versuche ich, auf dieser ContentPage die Schaltfläche "Senden" auszulösen. Ich möchte das Ereignis dieses bestimmten Knopfes abfeuern.

Stattdessen befindet sich oben auf der Seite auf einer MasterPage ein Suchtextfeld und eine Schaltfläche, und das Ereignis dieser Suchschaltfläche wird ausgelöst.

Wie steuere ich, um die Senden-Schaltfläche dieser ContentPage anstelle der Suchschaltfläche der MasterPage auszulösen?

Ich verwende Ektron CMS für mein Content Management.

Ron
quelle
Haben Sie ein Panel auf der Inhaltsseite, könnten Sie in diesem Fall möglicherweise die Standardschaltfläche als
Senden festlegen
Danke V4Vendetta, ja, ich habe dieses Problem gelöst, indem ich ein Panel hinzugefügt und den Standardknopf zum Senden festgelegt habe
Ron

Antworten:

99

Am einfachsten ist es, die Felder und Schaltflächen in ein Bedienfeld einzufügen und die Standardschaltfläche auf die Schaltfläche festzulegen, die bei der Eingabe aktiviert werden soll.

<asp:Panel ID="p" runat="server" DefaultButton="myButton">
  <%-- Text boxes here --%>
  <asp:Button ID="myButton" runat="server" />
</asp:Panel>
Kirche
quelle
Bitte beachten Sie, dass diese Lösung auf Javascript onkeypress="javascript:return WebForm_FireDefaultButton(event, &#39;ctl00_MainContentPlaceHolder_btnSave&#39;)">basiert , da so etwas wie zu Ihrer Seite hinzugefügt wird
R. Schreurs
Perfekte Lösung - Danke Kirk
Sensa
1
@kirk Was ist, wenn sich das Textfeld irgendwo über der Schaltfläche befindet, ich meine nicht zusammen, wie können wir dasselbe erreichen?
Jyotish Singh
@JyotishSingh Du kannst das Gleiche tun, wenn du das TextBoxund Buttoninnerhalb desselben platzierst Panel. Legen Sie dann die DefaultButton- Eigenschaft fest.
Kirk
36

Wenn Sie dies über Code tun müssen, verwenden Sie

Me.Form.DefaultButton = Me.btn.UniqueID

Wo btnist Ihre Tastensteuerung?

Lester
quelle
16

Sie können die DefaultButtonEigenschaft entweder für ein serverseitiges formSteuerelement oder für ein PanelSteuerelement verwenden. Gruppieren Sie in Ihrem Fall die Steuerelemente in einem PanelElement, das dieselbe Schaltfläche auslösen soll:

<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
quelle
6

Sie können jetzt die UseSubmitBehavior-Eigenschaft verwenden, um alle Schaltflächen zu deaktivieren, die beim Senden nicht ausgelöst werden sollen (weitere Informationen finden Sie in der Dokumentation).

    <asp:Button ID="BtnNotToFIre" runat="server" Text="Search" UseSubmitBehavior="false" />
adinas
quelle
1
Absoluter Stern! Das ist das, was ich benötige!
Stefano Magistri
Außerdem sind keine zusätzlichen HTML- / Asp.net-Elemente erforderlich, die möglicherweise nicht mit dem Seitenlayout funktionieren.
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
quelle