2010-08-12 19 views
18

Tengo un cuadro de texto y muchos botones. Cuando el usuario está en un cuadro de texto y presiona la tecla "enter", se genera un clic específico. Leí en Internet que hay algunos problemas con la tecla "enter" e intenté algunas soluciones, pero aún así siempre ingresa ese evento de botón (ese botón es el primer botón de la página).tecla Intro en asp.net disparando el botón incorrecto

intenté crear un botón que no hace nada y escribir esto en el Page_Load:

idTextBoxFA.Attributes.Add("onkeydown","if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementBtId('" + noEnterButton.UniqueID + "').click();return false;}} else {return true}; "); 

Todos mis controles de página están en una forma y yo probamos dando la forma "defaultButton" propiedad a ese botón creé. Eso tampoco funcionó.

¿Alguna idea de por qué esto no funciona y qué estoy haciendo mal?

+0

duplicado posible de [cómo establecer un valor predeterminado 'entrar' en un determinado botón] (http://stackoverflow.com/questions/7638119/how-to-set-a-default-enter-on-a-certain-button) –

+0

El mío es anterior;) –

+0

Las dos preguntas son tan similares que no estaba seguro de cuál marcar. La tendencia de StackOverflow es elegir la pregunta más clara y mejor formateada, no la que se publicó primero. En este caso, sin embargo, incluso el fraseo fue lo suficientemente similar, así que fui con la pregunta más popular y la que tenía más votos. Lo siento. –

Respuesta

36

La manera estándar en ASP.NET para controlar qué botón de envío se activa cuando se presiona ENTRAR es para envolver los controles y botones en un asp: Panel con la propiedad DefaultButton establecida en el botón correcto.

Si estoy leyendo su pregunta correctamente, solo quiere que se active un botón específico cuando se presiona ENTER, de modo que envuelva todo en su página en un único asp: Panel.

<asp:Panel id="pnlDefaultButton" runat="server" DefaultButton="btnOK"> 
    <!-- All controls here including: --> 
    <asp:Button id="btnOK" runat="server" Text="OK" /> 
</asp:Panel> 
+0

gracias, encontré esto realmente útil :) – iamserious

+0

¿Qué hay de asp: contenido? Uso páginas maestras y no tengo panel ni formulario en mi página. – Marcel

+0

@Marcel - No estoy seguro de a qué te refieres. El uso de páginas maestras no cambia mucho, a menos que el botón esté en una sección de contenido y las otras partes de la página en otro lugar. En esa situación, podría reorganizar su contenido, o buscar en una solución de JavaScript pura. –

7

No se necesita panel. sólo tiene que utilizar el siguiente:

UseSubmitBehavior="false" 
0

Utilice

idTextBoxFA.Attributes.Add("onkeypress", "javascript:var evnt = window.event"; 
if(evnt.keyCode==13) 
{ 
document.getElementById('" + noEnterButton.ClientID + "').click(); 
} 
else{};"); 
Cuestiones relacionadas