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 validar relaciones entre registros antes de eliminar

Crear fomulario HTML con checkbox sin Active Record

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

Agregar select en encabezado de busqueda de un GridView

hostinger

ventana bienvenida