Pregunta

Tengo esto funcionando en la configuración local (con jquery.1.6.4) pero no funciona en la configuración de desarrollo (jquery.1.3.2).

Considere la siguiente forma:

<form onsubmit="return validateMacros();">
     <input id="formsubmitbutton" type="submit" name="formsubmitbutton" value="Submit" />
</form>

Nota la validateMacros(); llame arriba.

Y el siguiente javascript:

jQuery(document).ready(function()
{

$("input#formsubmitbutton").click(preValidateUrls); 

        function preValidateUrls(evt)
        {
                evt.preventDefault(); //to prevent form submission until completion of async event

                $.ajax({
                    ...
                    ...
                    success: function(res)
                    {
                         $("form#frmBanners").submit();  //This submits the form in case of both versions but in 1.3.2 case, the validateMacros() function is not called
                    }
               });
       }

});

function validateMacros()
{
   //some logic here - which is not executing in case of jquery.1.3.2
}

Cuando se carga jquery.1.6.4, la función validateMacros() se ejecuta después de la finalización de la ejecución de preValidateUrls(), que se desea.

Pero cuando se carga jquery.1.3.2, validateMacros() no se ejecuta en absoluto y el formulario simplemente se envía.

¿Cómo hago para que funcione en ambas versiones?¿Qué estoy haciendo mal?

¿Fue útil?

Solución

¡Vaya discreto!

$('form#frmBanners').on('submit', validateMacros);

Lo que estamos haciendo aquí es suscribiéndose la función a la submit evento del formulario, después de darle una identificación (acabo de notar que usaste frmBanners como ejemplo).Discreto significa que no estás poniendo ningún Javascript en tu HTML, que es el propósito principal de bibliotecas como jQuery.Entonces, en cualquier parte de su archivo Javascript externo, incluya la línea que proporcioné anteriormente.Cada vez que el formulario es enviado y no Justo cuando se hace clic en el botón Enviar, se llamará a la función.

Entonces, cuando llamas $("form#frmBanners").submit();, se activa el evento y se llama a la función.Este es un paso más hacia seguir la convención en lo que respecta a disparar este tipo de eventos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top