Почему я не могу инициализировать функцию jQuery в рамках обратного вызова getScript?

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

Вопрос

Мой конкретный вопрос/проблема связана с реализацией v1.7 плагина проверки JQUERY Cedric Dugas (http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/#comments), Но я считаю, что проблема может быть легко обобщена в другие ситуации.

Обычно я загружаю следующий скрипт, как:

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

Затем, чтобы инициализировать плагин, я делаю следующее:

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

У меня есть форма с атрибутом идентификатора со значением «myformid», а скрипт проверяет поля формы. Это работает.

Однако, если я включаю два бита кода на каждую страницу, но на странице нет формы с идентификатором myformid, то я получаю нулевую ошибку. Чтобы попытаться решить эту проблему и сделать нагрузку плагина, только когда существует соответствующая форма, я попробовал это:

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

Это тоже работает нормально. Однако теперь я не могу понять, как инициализировать ValidationEngine и связать его с формой. Почему это не работает?

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

Я также попробовал это:

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

Неудачно. Я получаю эту ошибку: $ ("#myformid") null.

Идеи? Я почти лысый, как есть. Это не помогает!

Это было полезно?

Решение 2

Оказывается, это был прототип конфликт из сценария, добавленного другим разработчиком. Не было ничего не так с

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

Другие советы

Вы можете включить JS на все ваши страницы, но вызовов ValidationEngine только в том случае, когда существует форма. Как это:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top