que he visto unas cuantas maneras de hacer esto:
- botones de Desactivar el clic
- botones Desactivar en enviar
- Deshabilitar el formulario en el envío
Pero ninguno ve m para trabajar como se esperaba, así que hice mi propio método.
Añadir una clase a su forma llamada submit-once
y utilizar los siguientes jQuery:
$('form.submit-once').submit(function(e){
if($(this).hasClass('form-submitted')){
e.preventDefault();
return;
}
$(this).addClass('form-submitted');
});
Esto añade otra clase a su forma: form-submitted
. Luego, si intenta enviar el formulario de nuevo y tiene esta clase, jQuery evitará que el formulario envíe y salga de la función al return;
y, por lo tanto, no se volverá a enviar nada.
Elegí usar $('form.submit-once')
en lugar de $('form')
porque algunos de mis formularios usan Ajax, que debería poder enviar varias veces.
Puede probarlo en this jsFiddle. Agregué target="_blank"
al formulario para que pueda probar enviar el formulario varias veces.
Nota al margen: es posible que desee considerar a los usuarios que no sean JS al evitar la doble presentación en el servidor. Por ejemplo, tenga una variable de sesión que almacene la última fecha/hora de envío e ignore cualquier envío posterior en 3 segundos.
Bueno, después de que la función realiza su acción, se envía el formulario. ¿No es eso lo que quieres? – EmCo
Así que está tratando de deshabilitar el botón (¿está tratando de usar ajax?) Y enviar los campos del formulario y preguntar sobre ambos? O simplemente deshabilitando. La desactivación no funcionará si la página se actualiza inmediatamente. – justkt
una vez que hacen clic en "enviar", el botón de enviar debe deshabilitarse, el formulario debe enviarse y todas las variables $ _POST deben establecerse. – scarhand