2010-01-07 21 views
10

Quiero presionar la tecla enter para ir a p2.htm o p3.htm de acuerdo con el texto de entrada que estaba escribiendo. Y también quiero presionar el botón submit1 para alertar ('no1') manualmente.¿Cómo deshabilitar el comportamiento de envío automático al presionar la tecla Intro?

Funciona en Firefox, pero en IE6, cuando presiono la tecla Enter, se enviará el botón de enviar.

¿Cómo puedo hacer las cosas bien en IE 6 como en FireFox?

Uso javascript y jQuery.

<input id="Text2" type="text" onkeyup="if(event.keyCode==13){go2();}" /> 
<input id="Text3" type="text" onkeyup="if(event.keyCode==13){go3();}" /> 

<input id="submit1" type="submit" value="submit" onclick="alert('no1')" /> 

<script type="text/javascript"> 
    function go2() 
    { 
     window.location = "p2.htm"; 
    } 
    function go3() 
    { 
     window.location = "p3.htm"; 
    } 
</script> 
+1

No veo ningún jQuery aquí ... – Skilldrick

Respuesta

8

Esta función debe hacer el truco:

function submitOnEnter(e, page) { 
    var key; 

    if (window.event) 
     key = window.event.keyCode; //IE 
    else 
     key = e.which; //Firefox & others 

    if(key == 13) 
     window.location = page; 
} 

usted debe llamar así:

<input id="Text2" type="text" onkeyup="submitOnEnter(event, 'p2.html')" /> 
+0

Hay un error, pero tu solución me ayuda. function submitOnEnter (e, page) { clave var; if (window.event) key = window.event.keyCode; // IE else clave = e.which; // Firefox y otros if (clave == 13) { window.location = page; devuelve falso; // evitar presionar automáticamente el botón de enviar } } – Mike108

+0

Muchas gracias. – Mike108

+0

Sí, tienes razón Olvidé la devolución. – Jojo

5

Cambiar el tipo de entrada de "enviar" para "botón"

+1

No lo rompa por completo cuando JS no esté disponible. Desarrolla cosas que funcionan http://icant.co.uk/articles/pragmatic-progressive-enhancement/ – Quentin

+0

Para ser justos, el OP está bloqueado en una solución JS. –

23
<form onsubmit="return false"></form> 

Esto detendrá la forma pr Oceeding a la página siguiente después de hacer clic en el botón enviar o presionar enter.

+0

3 años más tarde y sigue salvando el día. No es más simple que esto. –

+3

¿Qué sucede si solo deseo desactivar el envío de la tecla Intro, pero quiero mantener el envío al hacer clic? – sumid

+0

@sumid, [¿mi respuesta a continuación] (http://stackoverflow.com/a/6778590/590719) ayuda en esa instancia? – WEFX

2
<%@taglib uri="/struts-tags" prefix="s" %> 
<html> 
<head> 
    <script type="text/javascript"> 
     function stopsubmit() 
     { 
      document.ourform.onsubmit="return true"; 
     } 
     function pup() 
     { 
      return true; 
     } 
    </script> 
</head> 
<body> 
    <form action="sa.jsp" name="ourform" onsubmit="return false"> 
     <s:submit action="" onclick="stopsubmit()" theme="simple"></s:submit> 
    </form> 
</body> 

21

Si se utiliza MVC3, puede desactivar la presentación a través de Enter mediante la edición de la llamada BeginForm de la siguiente manera:

@using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Post, new { onkeydown = "return event.keyCode!=13" })) 
{ 
    ... 
} 
+1

¡El enfoque más simple aquí y funcionó como un amuleto! –

+0

Esto deshabilitará la tecla enter en textarea dentro del formulario. – Santosh

5

El problema con la solución aceptada es que la normalidad botones de envío ya no funcionan . Debe guiar todos los botones.

<form onsubmit="return false"></form> 

Aquí hay una mejor solución que no rompe los botones javascript submit. Esta solución simplemente le dice al navegador que no haga un comportamiento predeterminado cuando un usuario pulsa la tecla Intro en las entradas del formulario.

// prevent forms from auto submitting on all inputs 
$(document).on("keydown", "input", function(e) { 
    if (e.which==13) e.preventDefault(); 
}); 
Cuestiones relacionadas