2010-02-02 13 views
5

Tengo un verdadero rascador de cabeza aquí: tengo una página con varios controles y un botón ASP: o dos. Cuando estoy en un control, y presiono la tecla Enter, actúa como si hubiera hecho clic en el botón de enviar, que en realidad no quiero hacer en este momento.Ingrese el botón de activación de la tecla, haga clic en, pero no lo quiero en

El botón no está en un ASP: Panel con un conjunto DefaultButton, no tiene ningún atributo OnClientClick, no veo ningún JavaScript que mire la tecla Enter ... ¿Por qué está activando?

Si creo una página .ASPX estándar y pongo un cuadro de texto y un botón sobre ella, ejecútela y presione la tecla Intro, el botón se ignorará, p. el evento click no se dispara. Este es el comportamiento que espero, pero no estoy obteniendo.

En resumen, ¿qué otra cosa puede hacer que un botón crea que es el botón predeterminado de la página?

Gracias,

Mike K.


Ok, aquí está mi página de prueba de marcado:

<p><asp:Label ID="uxNameL" runat="server" AssociatedControlID="uxName">Name</asp:Label><asp:TextBox ID="uxName" runat="server"></asp:TextBox></p> 
<p><asp:Button id="uxSubmit" runat="server" Text="Submit" onclick="uxSubmit_Click" /></p> 
<asp:Literal ID="uxOut" runat="server" EnableViewState="false"></asp:Literal> 

Esto es lo que sucede en el código:

protected void uxSubmit_Click(object sender, EventArgs e) 
    { 
     uxOut.Text = uxName.Text; 
    } 

Cuando Corro la página e ingreso un poco texto en el cuadro de texto y presiona Enter - ha, ¿podrías mirar eso ?: En IE 8, el evento del botón se ignora, p. la página simplemente vuelve a cargar, pero en FF, envía el formulario ...

Hmmmmm.

Respuesta

8

Creo (y puedo corregirlo), pero si tiene un formulario, con un botón de entrada de tipo enviar, cuando presione enter, se disparará ese botón.

+0

La página de prueba que configuro emite un también, y sin embargo eso no activa el botón enviar: -s –

+0

Por favor vea mi propia respuesta para la diferencia en IE8 y FF ... Más extraño. –

1

De hecho, me han tratado de jugar con él en el Firebug ahora y parece que este es un comportamiento estándar del navegador, es decir, no tiene nada que ver con JavaScript o ASP. Si tiene un botón de enviar y un cuadro de texto, entonces simplemente se envía al ingresar. Cambie el tipo de entrada al botón para evitarlo.

+0

Por favor, vea mi propia respuesta para la diferencia en IE8 y FF ... Lo más extraño. –

4

Si no desea que la tecla Intro para activar, tal vez usted puede agregar este js código a su página:

if (window.event.keyCode == 13) 
{ 
    event.returnValue=false; 
    event.cancel = true; 
} 

Es necesario llamar a esta función con el controlador onKeyDown en la etiqueta de su <body> página.

0

) código HTML:

<form method="post" action="add_data.php" id="master_form"> 
<input type='text' name='user-mail' /> 
<input type="button" value="Submit" onclick="submitform();" /> 
</form> 

código javascript:

function submitform() 
{ 
document.getElementById('master_form').submit(); 
} 
13

Normalmente

<asp:Button ID="button" UseSubmitBehavior="false"/> 

obras. Sin embargo, es posible que deba desactivar el retroceso en su aplicación, lo que le devuelve 1 página en su historial reciente.

+1

Creo que también es importante tener en cuenta que si usa 'UseSubmitBehavior =" false "', no solo evitará que responda al botón enter, sino que evitará que el evento click click aparezca en el código detrás cuando haga clic en el botón, que puede no ser una consecuencia prevista. – Hawkeye

Cuestiones relacionadas