2010-04-30 20 views
5

Tengo un evento js en la tecla enter, que funciona bien. Pero después de ese evento, también envía el formulario que tiene un botón de envío. ¿Cómo evito que el botón de enviar se enfoque después del evento de pulsación de tecla anterior?¿Cómo desactivo el envío de formularios con la tecla Entrar?

EDITAR: NO QUIERO QUE SE ENVÍE EL BOTÓN ENVIAR ENTRAR, SÓLO AL HACER CLIC.

+1

bien, así que reemplazar su presente con un botón. Entonces, en lugar de nc3b

+1

Creo que vale la pena repetir esto: desaconsejo este tipo de comportamiento no estándar, a menos que tenga un caso de uso muy bueno y muy específico donde esta funcionalidad simplemente * debe * ser alterada. Aparte de eso, las respuestas aquí son Correcto: su controlador de eventos de pulsación de tecla simplemente debe devolver 'falso'. –

+0

@anonymouscoward - muchos sistemas integrados o terminales no tienen teclas de tabulación para moverse entre los campos. Los usuarios han sido condicionados a presionar ENTER después de ingresar los datos de un campo para avanzar al siguiente campo. Estoy de acuerdo en que esto no es óptimo, pero es lo que es. – StingyJack

Respuesta

4

No estoy seguro si he entendido bien, pero si usted está tratando de evitar que la forma de conseguir presentado:

Adjuntar un evento onsubmit y volver falsa de ella.

<form onsubmit="submit_handler();"></form> 
[...] 

function submit_handler() 
{ 
    //do stuff 
    return (false); 
} 
+1

¿Qué pasa con la tecla Intro? Quiere que solo se envíe con el mouse, no con la tecla enter –

+0

Sí, comencé su pregunta. – nc3b

2

Normalmente la respuesta a javascript preguntas del tipo "¿Cómo puedo mantener mi forma de presentar después de que ...." es "hacer su función javascript retorno false".

+2

Esto funcionará. Aunque desaconsejo firmemente el comportamiento no estándar, a menos que tenga un caso de uso muy bueno y muy específico donde esta funcionalidad simplemente * debe * ser alterada. –

8

Usted puede hacer esto con java script son los siguientes;

<script type="text/javascript"> 

    function stopReloadKey(evt) { 
     var evt = (evt) ? evt : ((event) ? event : null); 
     var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
     if (evt.keyCode == 13) { 
      return false; 
     } 
    } 

    document.onkeypress = stopReloadKey; 

    </script> 

O usando jQuery puede hacer esto,

<script type="text/javascript"> 
     $(document).ready(function() { 
      $("form").bind("keypress", function(e) { 
       if (e.keyCode == 13) { 
       return false; 
       } 
      }); 
     }); 
</script> 
Cuestiones relacionadas