cómo establecer un 'entrar' predeterminado en un botón determinado

81

Hay un cuadro de texto en ContentPage. Cuando el usuario presiona Enter en ese cuadro de texto, estoy tratando de activar un botón 'Enviar' en este ContentPage. Me gustaría disparar el evento de ese botón en particular.

En su lugar, hay un cuadro de texto de búsqueda y un botón en la parte superior de la página desde una MasterPage, y el evento de este botón de búsqueda se activa.

¿Cómo controlo para activar el botón de envío de este ContentPage, en lugar del botón de búsqueda de MasterPage?

Estoy usando Ektron CMS para mi gestión de contenido.

Ron
fuente
¿Tiene un panel en la página de contenido, tal vez podría establecer el botón predeterminado como enviar en ese caso
V4Vendetta
Gracias V4Vendetta, sí, resolví esto agregando un panel y configurando el botón predeterminado para enviar
Ron

Respuestas:

99

La forma más sencilla es poner los campos y el botón dentro de un Panel y establecer el botón predeterminado en el botón que desea activar al ingresar.

<asp:Panel ID="p" runat="server" DefaultButton="myButton">
  <%-- Text boxes here --%>
  <asp:Button ID="myButton" runat="server" />
</asp:Panel>
Iglesia
fuente
Tenga en cuenta que esta solución se basa en javascript, ya que onkeypress="javascript:return WebForm_FireDefaultButton(event, &#39;ctl00_MainContentPlaceHolder_btnSave&#39;)">se agrega algo como a su página
R. Schreurs
Solución perfecta - Gracias Kirk
Sensa
1
@kirk ¿Qué pasa si el cuadro de texto está en algún lugar encima del botón, quiero decir, no juntos, entonces, cómo podríamos lograr lo mismo?
Jyotish Singh
@JyotishSingh Puedes hacer lo mismo si pones TextBoxy Buttondentro de lo mismo Panel. Luego establezca la propiedad DefaultButton .
Kirk
36

si necesita hacerlo desde el código, use

Me.Form.DefaultButton = Me.btn.UniqueID

¿Dónde btnestá tu botón de control?

Lester
fuente
16

Puede utilizar la DefaultButtonpropiedad en un formcontrol o en un Panelcontrol del lado del servidor . En su caso, agrupe los controles en una Panelque debería disparar el mismo botón:

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

Ahora puede usar la propiedad UseSubmitBehavior para deshabilitar todos los botones que no desea activar al presionar enviar (consulte la documentación para obtener más información)

    <asp:Button ID="BtnNotToFIre" runat="server" Text="Search" UseSubmitBehavior="false" />
adinas
fuente
1
¡Estrella absoluta! ¡Esto es lo que necesito!
Stefano Magistri
Y no requiere elementos html / asp.net adicionales que pueden no funcionar con el diseño de la página.
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
fuente