¿Por qué no puedo inicializar una función jQuery dentro de una devolución de llamada de GetScript?

StackOverflow https://stackoverflow.com/questions/4820907

Pregunta

Mi pregunta/problema específico tiene que ver con la implementación de v1.7 del complemento de validación jQuery de Cedric Dugas (http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/#comments), Pero creo que el problema puede generalizarse fácilmente a otras situaciones.

Por lo general, carga el siguiente script como así:

<script src="inc/formValidator/js/jquery.validationEngine.js" type="text/javascript"></script> 

Luego, para inicializar el complemento, hago lo siguiente:

<script> 
$(document).ready(function() {      
    $("#myFormID").validationEngine();
});
</script>

Tengo un formulario con un atributo de identificación con un valor de "myFormid" y el script valida los campos de formulario. Esto funciona.

Sin embargo, si incluyo los dos bits de código en cada página, pero la página no tiene un formulario con una ID de MyFormid, entonces obtengo un error nulo. Para tratar de abordar este problema y hacer que el complemento se cargue solo cuando existe un formulario apropiado, probé esto:

<script>
    if($('#myFormID').length) 
    {
        $.getScript('inc/formValidator/js/jquery.validationEngine.js', function() {
            alert('Load was performed.');
        });
    };
</script>

Eso también funciona bien. Sin embargo, ahora no puedo entender cómo inicializar la validationEngine y vincularlo al formulario. ¿Por qué no funciona esto?

    $.getScript('inc/formValidator/js/jquery.validationEngine.js', function() 
    {
        $("#myFormID").validationEngine();
    });

También probé esto:

    $.getScript('inc/formValidator/js/jquery.validationEngine.js', function() 
    {
        $("#myFormID").load(function()
        {
            $(this).validationEngine();
        });
    });

Sin suerte. Recibo este error: $ ("#myFormid") es nulo.

Ideas? Estoy casi calvo como es. ¡Esto no está ayudando!

¿Fue útil?

Solución 2

Resulta que fue un conflicto prototipo de un script agregado por otro desarrollador. No había nada inherentemente mal con

<script>
    if($('#myFormID').length) 
    {
        $.getScript('inc/formValidator/js/jquery.validationEngine.js', function() {
            $("#myFormID").validationEngine();
        });
    };
</script>

Otros consejos

Puede incluir el JS en todas sus páginas, pero llame a ValidationEngine solo cuando exista el formulario. Como eso:

<script src="inc/formValidator/js/jquery.validationEngine.js" type="text/javascript"></script> 

  
$(document).ready(function() {
if($('#myFormID').length) 
    {
     $("#myFormID").validationEngine();
    }
});

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