Tengo un formulario que, cuando se envía, necesito realizar un procesamiento adicional antes de que deba enviar el formulario. Puedo evitar el comportamiento predeterminado de envío de formularios, luego realizar mi procesamiento adicional (básicamente es llamar a la API de Google Maps y agregar algunos campos ocultos al formulario), y luego necesito el formulario para enviar.
¿Hay alguna forma de "evitar el valor predeterminado" y, en algún momento, "continuar predeterminado"?
javascript
jquery
StackOverflowNewbie
fuente
fuente

Respuestas:
Utilizar
jQuery.one()El uso de
oneprevenir también un bucle infinito porque estesubmitevento personalizado se separa después del primer envío.fuente
Cuando unes el
.submit()evento al formulario y hace las cosas que desea hacer antes de regresar (verdadero), estas cosas suceden antes del envío real.Por ejemplo:
Ejemplo simple
Otro ejemplo en jquery.com: http://api.jquery.com/submit/#entry-examples
fuente
Yo solo haría:
Llame
preventDefaultal principio y use lasubmit()función más tarde, si solo necesita enviar el formulariofuente
De esta manera, hará un bucle sin fin en su JS. para hacerlo de una mejor manera, puede utilizar lo siguiente
¡Espero que ayude! ¡Gracias!
fuente
Esta es, en mi humilde opinión, la solución más genérica y robusta (si sus acciones son activadas por el usuario, por ejemplo, 'el usuario hace clic en un botón'):
Como ejemplo, observe esta elegante solución para agregar "¿Está seguro?" emergente a cualquier botón simplemente decorando un botón con un atributo. Continuaremos condicionalmente el comportamiento predeterminado si el usuario no se excluye.
1. Agreguemos un texto de advertencia a cada botón que deseemos con un mensaje emergente de "¿estás seguro?"
2. Adjunte controladores a TODOS esos botones:
Eso es.
fuente
fuente
Con
jQueryuna pequeña variación de la respuesta de @Joepreludian anterior:Puntos importantes a tener en cuenta:
.one(...)En vez de.on(...) or .submit(...)namedfunción en lugar de,anonymous functionya que la referiremos dentro decallback.Puede cambiar el valor de la
allIsWellvariable en el siguiente fragmentotrueofalseprobar la funcionalidad:Buena suerte...
fuente
De forma pura con Javascript, puede enviar el formulario después de evitar el incumplimiento.
Esto se debe a que
HTMLFormElement.submit()nunca llama alonSubmit(). Por lo tanto, confiamos en esa rareza de la especificación para enviar el formulario como si no tuviera un controlador onsubmit personalizado aquí.Vea este violín para una solicitud sincrónica.
Esperar a que finalice una solicitud asincrónica es igual de fácil:
Puede consultar mi violín para ver un ejemplo de una solicitud asincrónica.
Y si estás deprimido con promesas:
Y aquí está esa solicitud .
fuente
Puedes usar
e.preventDefault()que detendrá la operación actual.de lo que puedes hacer
$("#form").submit();fuente
"Inyección de validación sin bucle de envío":
Solo quiero verificar reCaptcha y algunas otras cosas antes de la validación de HTML5, así que hice algo así (la función de validación devuelve verdadero o falso):
fuente