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

Tutorial de implementación de calendario de rango de fechas con Karkit en gridView

Las uniones utilizando Active Record

Crear fomulario HTML con checkbox sin Active Record

Migraciones de Base de Datos en Yii

Migrando de bootstrap 3 a bootstrap 5

hostinger

ventana bienvenida