Cómo evitar el reenvío de formulario


En este tutorial vamos a ver cómo evitar el envío doble de formularios. 




Aviso importante: Esta solución solo trabaja a nivel explorador, no evita el uso de herramientas de inserción de datos con herramientas automatizadas.  

Esta solución puede ser implementada a nivel vista o a nivel layout.

A nivel individual en la vista puedes colocar el siguiente código en el inicio de la vista. 

$js = <<<JS
       
    $(document).on("beforeValidate", "form", function(event, messages, deferreds) {
        $(this).find(':submit').attr('disabled', true);
         console.log('BEFORE VALIDATE TEST');
    }).on("afterValidate", "form", function(event, messages, errorAttributes) {
        console.log('AFTER VALIDATE TEST');
        if (errorAttributes.length > 0) {
            $(this).find(':submit').attr('disabled', false);
        }
    });     


JS;

$this->registerJs($js);

A nivel de sitio solo debes de colocar este código dentro del layout para que este presente en todos los formularios.

Referencias


Comentarios

Aprende Yii2


Lo más Visto

Como crear formulario HTML de carga de archivo sin Active Record

Como personalizar pagina de error 404

Como enviar un correo si se produce un error en el sistema

Como agregar select2 como filtro de un gridview utilizando Ajax para la búsqueda de elementos

Como crear un log por categoría

hostinger

ventana bienvenida