2011-05-10 21 views
29
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
<ContentTemplate> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" /> 
</ContentTemplate> 
</asp:UpdatePanel> 

tengo que realizar Button1 evento de clic cuando el usuario pulse Enter key en Textbox1Realizar evento de clic del botón cuando el usuario pulsa la tecla Intro en el cuadro de texto

+0

mejor definir una función que será llamada en tanto haga clic y presione evento clave – Badr

+0

Si lo pones en una etiqueta de formulario que ocurre de forma automática ¿verdad? – Ruben

Respuesta

13

En el caso de carga de la página aspx, añadir un onkeypress a la caja.

this.TextBox1.Attributes.Add(
    "onkeypress", "button_click(this,'" + this.Button1.ClientID + "')"); 

A continuación, agregue este javascript para evaluar la pulsación de tecla y, si es "entrar", haga clic en el botón derecho.

<script> 
    function button_click(objTextBox,objBtnID) 
    { 
     if(window.event.keyCode==13) 
     { 
      document.getElementById(objBtnID).focus(); 
      document.getElementById(objBtnID).click(); 
     } 
    } 
</script> 
+2

Cuidado, ya que emite un 'window.event no está definido' en Firefox. –

+0

¿Cuál es la solución para [email protected] – SearchForKnowledge

+0

Esto no funcionó para mí: http://stackoverflow.com/questions/27255385/how-to-prevent-the-trigger-of-another-button?noredirect=1#comment43006332_27255385 – SearchForKnowledge

69

Ponga su forma dentro de un panel de control asp.net y establezca su atributo con su defaultButton botón Id. Vea el siguiente código:

<asp:Panel ID="Panel1" runat="server" DefaultButton="Button1"> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" /> 
      </ContentTemplate> 
      </asp:UpdatePanel> 
    </asp:Panel> 

Espero que esto te ayude ...

+2

DefaultButton: elegante en su simplicidad, ¡gracias! – QMKevin

+3

+1 Sorprendentemente simple, muchas gracias. : 0) –

+1

Esta es una buena solución. Sin embargo, requiere .Net 2.0 o superior. –

-2

Usted puede tratar de:

En HTML:

<asp:TextBox ID="TextBox1" runat="server" onKeyDown="submitButton(event)"></asp:TextBox> 
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 

y JavaScript:

function submitButton(event) { 
     if (event.which == 13) { 
      $('#Button1').trigger('click'); 
     } 
    } 

Código atrás:

protected void Button1_Click(object sender, EventArgs e) 
{ 
     //load data and fill to gridview 
} // fixed the function view for users 

Esperanza esta ayuda

+1

no es 'onKeyDown' lo mismo que el evento' textChanged' para el control? eso significa que se hará clic en el botón para cada entrada de caracteres en el cuadro de texto, que podría ser malo, incluso si está utilizando una instrucción if para determinar qué tecla se presionó. las otras soluciones son mejores – Malachi

2

CodeProject tiene una solución completa para esto:

http://www.codeproject.com/Articles/17241/Capturing-the-Enter-key-to-cause-a-button-click

y al igual que el artículo dice: "a decidir qué solución se adapta mejor a sus necesidades"

=========== ======== EDITADO RESPUESTA =========================

El enlace mencionado anteriormente, habla de dos formas de capturar el evento "Introducir clave":

Javascript (se unen al evento onKeyPress al objeto y crear una función JavaScript para comprobar qué tecla se ha pulsado y hacer su lógica)

_Page_Load en código detrás: _

código
//Add the javascript so we know where we want the enter key press to go 
if (!IsPostBack) 
{ 
    txtboxFirstName.Attributes.Add("onKeyPress", 
        "doClick('" + btnSearch.ClientID + "',event)"); 
    txtboxLastName.Attributes.Add("onKeyPress", 
        "doClick('" + btnSearch.ClientID + "',event)"); 
} 

javascript:

<SCRIPT type=text/javascript> 
    function doClick(buttonName,e) 
    { 
     //the purpose of this function is to allow the enter key to 
     //point to the correct button to click. 
     var key; 

     if(window.event) 
       key = window.event.keyCode;  //IE 
     else 
       key = e.which;  //firefox 

     if (key == 13) 
     { 
      //Get the button the user wants to have clicked 
      var btn = document.getElementById(buttonName); 
      if (btn != null) 
      { //If we find the button click it 
       btn.click(); 
       event.keyCode = 0 
      } 
     } 
    } 
</SCRIPT> 

Panel de control

<asp:Panel ID="panSearch" runat="server" DefaultButton="btnSearch2" Width="100%" > 
    <asp:TextBox ID="txtboxFirstName2" runat="server" ></asp:TextBox> 
</asp:Panel> 

Citando:

en cuenta que la etiqueta del panel tiene una propiedad llamada DefaultButton. Establece esta propiedad en el botón ID del botón en el que desea hacer clic y presione la tecla Enter evento. Por lo que cualquier cuadro de texto dentro del Grupo Especial dirigir su Introduzca pulse la tecla para el botón situado en la propiedad DefaultButton del Grupo

+1

Se recomiendan enlaces a recursos externos, pero agregue contexto alrededor del enlace para que los demás usuarios tengan una idea de qué es y por qué está allí. Siempre cite la parte más relevante de un enlace importante, en caso de que el sitio objetivo no esté disponible o esté permanentemente fuera de línea. - [¿Cómo puedo escribir una buena respuesta?] (Http://stackoverflow.com/help/how-to-answer) – Albireo

+0

@Albireo edité la respuesta, con suerte esto ayudará :) – lienysd

+0

El panel funcionó bien para mí. gracias –

0

Usted puede hacerlo con Javascript/jQuery:

<script> 
    function runScript(e) { 
     if (e.keyCode == 13) { 
      $("#myButton").click(); //jquery 
      document.getElementById("myButton").click(); //javascript 
     } 
    } 
</script> 

<asp:textbox id="txtUsername" runat="server" onkeypress="return runScript(event)" /> 

<asp:LinkButton id="myButton" text="Login" runat="server" /> 
1

en solo el código html, agregue un panel que contenga los controles de la página. Dentro del panel, agregue una línea DefaultButton = "buttonNameThatClicksAtEnter". Vea el ejemplo a continuación, no debería haber nada más requerido.

<asp:Panel runat="server" DefaultButton="Button1"> //add this! 
    //here goes all the page controls and the trigger button 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" /> 
</asp:Panel> //and this too! 
Cuestiones relacionadas