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.


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>

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?


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>

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" />

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();
    }
    });
});

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.