2011-11-08 11 views
88

tengo un formulario que tiene un botón que envía el formulario. Necesito hacer algo antes de que sucedan los hechos. Intenté hacer onClick en ese botón pero sucede después del envío.¿Cómo hacer algo antes en el envío?

No puedo compartir el código pero, en general, ¿qué debo hacer en jQuery o JS para manejar esto?

+6

* tos * [jsFiddle Ejemplo] (http://jsfiddle.net/XVAPa/) * tos * –

+1

@Brad Christie si solo pudiera aceptar un comentario como respuesta. Gracias muy útil. – Jimmy

+1

Odio cuando stackover cierra una pregunta. Se puede controlar sus acciones usando los siguientes eventos que disparan en el siguiente momento justo antes de la presentación de un formulario: 1- 2- onmouseover onmousemove 3- onMouseDown 4- onfocus 5- onmouseup 6- 7- onclick onsubmit –

Respuesta

138

Si usted tiene una forma como tal:

<form id="myform"> 
... 
</form> 

Se puede utilizar el siguiente código de jQuery para hacer algo antes de enviar el formulario:

$('#myform').submit(function() { 
    // DO STUFF... 
    return true; // return false to cancel form action 
}); 
+1

Estoy teniendo problemas al usar esto para bucles que deben completarse antes del envío. ¿Alguna sugerencia? – Smilyan

+0

¿Tienes algún código para mirar? No estoy seguro de entender el problema. –

+2

¿Por qué esto está envuelto en una llamada de función vacía? ¿No debería la función 'submit' enlazarse directamente con' $ ('# form') 'sin la función vacía circundante? EDITAR: [los documentos sugieren que la llamada a la función circundante no es necesaria] (https://api.jquery.com/submit/#submit-eventData-handler). – eykanal

4

asegúrese de que el botón de enviar no es de escribe "enviar", hazlo un botón. A continuación, utilice el evento onclick para activar JavaScript. Allí puedes hacer lo que quieras antes de publicar tus datos.

+1

El formulario se puede enviar de varias formas, como presionar enter en ciertos campos. La vinculación a un clic en un botón que no se puede hacer clic, no es una buena idea. Las otras respuestas muestran cómo vincular 'onsubmit' del * formulario *, que se activará sin importar cómo se envíe el formulario. – Jason

13

Asumiendo que tiene un formulario como el siguiente:

<form id="myForm" action="foo.php" method="post"> 
    <input type="text" value="" /> 
    <input type="submit" value="submit form" /> 

</form> 

puede adjuntar una -Evento onsubmit con jQuery así:

$('#myForm').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
}); 

Si return false no se envía el formulario después de la función, si devuelve verdadero o nada, se enviará como de costumbre.

Consulte el jQuery documentation para obtener más información.

5

Puede utilizar onclick para ejecutar código JavaScript o jQuery antes de enviar el formulario como el siguiente:

<script type="text/javascript"> 
    beforeSubmit = function(){ 
     if (1 == 1){ 
      //your before submit logic 
     }   
     $("#formid").submit();    
    } 
</script> 
<input type="button" value="Click" onclick="beforeSubmit();" /> 
+14

Pero esto no funciona, cuando el formulario contiene, p. un campo de entrada y el usuario está presionando la tecla de retorno que está disparando el evento de envío. Por lo general, es mejor adjuntarlo directamente al evento de envío para que pueda garantizar que se llame independientemente de cómo el usuario haya enviado el envío. – acme

+2

Ansyori

Cuestiones relacionadas