asp.net defaultbutton

Tecla enter en asp.net botón de disparo incorrecto



defaultbutton (3)

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

Si estoy leyendo tu pregunta correctamente, solo quieres que se active un botón específico cuando se presiona ENTER, así que envuelve todo en tu página en un solo asp: Panel.

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

Tengo un cuadro de texto y muchos botones. Cuando el usuario se encuentra en un cuadro de texto y presiona la tecla "enter", se genera el evento específico de clic de botón. Leí en Internet que hay algunos problemas con la tecla "enter" y probé 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).

Intenté crear un botón que no hace nada y escribir esto en la página de carga:

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 los controles de mi página están en un formulario y traté de darle la propiedad del formulario "defaultButton" al botón que creé. Eso tampoco funcionó.

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


No se necesita panel. Solo usa lo siguiente:

UseSubmitBehavior="false"


Por favor use

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