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

Mostrar gridView sin paginación

Cómo manipular la propiedad sameSite para prevenir "Cross-Site Request Forgery"

Como crear un dual listbox en bootstrap 4 ó 5

Habilitar y deshabilitar el debug en Yii

Migrando de bootstrap 3 a bootstrap 5

hostinger

ventana bienvenida