Почему я не могу инициализировать функцию jQuery в обратном вызове getScript? - PullRequest
0 голосов
/ 27 января 2011

Мой конкретный вопрос / проблема связана с реализацией v1.7 плагина проверки jQuery Седрика Дугаса (http://www.position -absolute.com / articles / jquery-form-validator-потому что-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>

У меня есть форма с атрибутом id со значением «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 ]

0 голосов
/ 28 января 2011

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

не было ничего плохого
<script>
    if($('#myFormID').length) 
    {
        $.getScript('inc/formValidator/js/jquery.validationEngine.js', function() {
            $("#myFormID").validationEngine();
        });
    };
</script>
0 голосов
/ 27 января 2011

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

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

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

...