¿Cómo ejecutar una función antes de que submit haga la validación del formulario?

publicado por: Anonymous

Tengo un formulario bastante grande. Algunos de los campos los he divido por secciones y se pueden ocultar con Toggle() para que no molesten mientras se rellenan los demás campos. El prolema aparece cuando el usuario envia los datos. Al hacer click en submit se hace una validacón automática y obtengo errores como este.

An invalid form control with name='Name' is not focusable.

Pensaba que haciendo algo así lo podría solucionar:

$("#form").on("submit" ,function()
{   
    for(var i=0; i<7;i++)
    {
        var id = "#toggle"+ (i+1);
        $(id).addClass("show");

    }   
});

Pero en este caso el método no se llega a ejecutar porque los errores aparecen primero.

También he intentado hacerlo así, sustituyendo el submit por un botón normal:

$("#enviar").on("click" ,function()
{
    for(var i=0; i<7;i++)
    {
            var id = "#toggle"+ (i+1);
            $(id).addClass("show");
    }
    $("#form").submit();
});

En este otro caso no tengo errores pero el formulario se envia sin ser validado.

¿Alguna forma de ejecutar el método antes de que se haga la validación del formulario? Es decir, ejecutarlo para que no haya errores y además sin perder la validación.

solución

Lo he solucionado de esta forma. Ocultando el submit y haciendo click en él a través de otro botón después de desplegar todos los toggles.

<button type="submit" value="Submit" name="submit" id="submit" style="visibility:hidden">Enviar</button> 

<button type="button" id="btn"">Enviar</button>

$("#btn").on("click" ,function()
{

    for(var i=0; i<7;i++)
    {
        var id = "#toggle"+ (i+1);
        $(id).addClass("show");
    }
    $("#submit").click();
});

De esta forma he conseguido que no salgan errores y no perder la validación automática del formulario.

Pero si alguien sabe otro camino mas “elegante” para hacer lo mismo sería estupendo que lo dijera.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *