raíz de AP revious question donde le pregunté acerca de cómo deshabilitar un botón de envío hasta que todas las llamadas Ajax ha terminado volviendo ...¿Cómo evito el envío de formularios hasta que hayan finalizado varias llamadas ajax? jQuery
Parece que la gente todavía se las arreglan para enviar el formulario incluso con la tecla bloqueada y una señal de advertencia . Supongo que podría ser presionando 'enter' en una entrada de texto.
¿Cómo hago para deshabilitar todo el formulario, en lugar de solo enviarlo?
El código hasta ahora es:
// if we're waiting for any ajax to complete we need to disable the submit
$(document).ajaxStart(function() {
$(".ajaxbutton").attr("disabled", "disabled");
// if it's taken longer than 250ms display waiting message
timer = setTimeout(function() {
$('#processingAlert').html(' ...please wait one moment');
$('#processingAlert').show();
}, 250);
})
$(document).ajaxComplete(function() {
$(".ajaxbutton").removeAttr("disabled");
$('#processingAlert').hide();
// cancel showing the message when the ajax call completes.
clearTimeout(timer);
});
Otra cosa que debo mencionar que podría ser la causa de un problema es que hay múltiples llamadas Ajax sucediendo al mismo tiempo, por ejemplo, un div recibe entradas ocultas y otra div en otro lugar en la página muestra un precio total, por ejemplo.
¿El hecho de que algunas llamadas ajax se completen rápidamente anula el efecto de inhabilitación de ajaxStart? EG ajax call1 y ajax call2 encienden el ajaxStart - call1 termina muy rápido, ¿volvería a habilitar el formulario mientras esperamos que call2 se complete?
¿Hay una forma mejor de hacer esto donde podríamos simplemente probar si TODAS las llamadas ajax se han completado?
Esto suena en la dirección correcta, desde el manual:. $ ("forma") presente (function() { if ($ ("Entrada: primero"). Val() == "correcta") { $ ("span"). Texto ("Validado ..."). Show(); return true; } $ ("span"). Text ("¡No válido!"). Show(). fadeOut (1000); return false; }); Así que si compruebo que todas las llamadas ajax se completen, puedo devolver la verdad. Estoy usando PHP, por lo que no puedo usar las funciones ASP desafortunadamente. – Ashley
PD ¿Alguien me puede dejar saber cómo insertar el código formateado en un comentario, siempre parezco tener todo aplastado en una línea – Ashley
No creo que pueda formatear el código en los comentarios. Continuaré y ampliaré tu pregunta con comentarios adicionales. –