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

Guía rápida para uso de widget kartik para select para formulario

Cómo instalar RBAC

Agregar select en encabezado de busqueda de un GridView

Prueba unitarias de calidad

hostinger

ventana bienvenida