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.


¿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>

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?


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>

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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.