Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > [jQuery]подключение validate.js


Автор: Aver78 19.3.2008, 03:12
Суть проблемы такова. существует 3 дива один под другим. Во время первого обращения к сайту создаются все 3 дива, контент в 1 и подключаются все плгины jquery. Потом используя плагин jquery.ajaxContent.js при клике на линке в 1 диве загружается контент 2-ого. С линков 2 дива также грузиться 3. В 3 существует форма к которой нужно подключить jquery.validate.js. Так вот как я ни бьюсь плагин не подключается. То что созданная функция для данной формы работает - 100%, проверял. Похоже проблема именно в том, что динамически созданные элементы jquery не учитываются(по крайней мере как обычно). В общем довольно сумбурно объяснил, но кто сталкивался с такой проблемой - думаю поймет.

Автор: ksnk 19.3.2008, 17:03
Поробуй подключить плагин http://plugins.jquery.com/project/livequery. Если не поможет - бросай сюда куски кода... 

Автор: Aver78 21.3.2008, 13:46
Вроде бы то что надо, но никак не пойму синтаксис. Везде примеры на click, а я никак не пойму аналогию. Попробую разобраться (

Автор: Aver78 21.3.2008, 14:07
Скину, заодно, и функцию которую надо запустить, расчитываю на совет.

$(function()                                      {
  var options =            {
    target: '#admin_modul_work'
                           };

  $('#edit_admin').validate                          ({
    submitHandler: function(form) {
      $(form).ajaxSubmit(options);
                                  },
    rules:    {
      email2: {
       required: true,
       minlength: 5,
       maxlength: 12,
       email: true
             }},
    messages: {
      email2: {
        required: 'Укажите свое имя!',
        minlength: 'Не менее 5 символов',
        maxlength: 'Не более 12 символов',
        email: 'Сие должно быть мылом'
              }}

                                                  });
                                                                    });

Автор: ksnk 21.3.2008, 15:34
В этом случае, наверное, проще написать как-то так
Код

function Init_Edit_Admin() {
  var options =  {
    target: '#admin_modul_work'
   };

  $('#edit_admin').validate ({
    submitHandler: function(form) {
 ...
        email: 'Сие должно быть мылом'
    }}
  });
});

$(Init_Edit_Admin); // если на старте формы обязательно нет - убрать

...
// Ajax'ом грузим форму
$('Чего-то-там').load('get_edit_admin.php',Init_Edit_Admin);


Совет с liveQuery был в этом случае, не очень удачным... :-(

Автор: Aver78 21.3.2008, 17:51
Мне кажется можно как то live подключить, ну да ладно, бог с ним пока что.
Переведу вопрос в другую плоскость.
файл 1  -  подключение библиотек и плагинов jquery.
фалй 2 - классы php
файл 3 - непосредственно исполнение методов подлюченных классов.

Если я загоняю эту функция в файл 3, напрямую в php код, то все замечательно, а если подключаю ее из внешенего файла 
echo "<script type='text/javascript' src='script.js'></script>"; то перестают работать ВСЕ методй jquery. 
В чем тут косяк ? Можно конечно и так оставить, но не эстетично и не наглядно.

Автор: ksnk 21.3.2008, 17:57
Цитата(Aver78 @  21.3.2008,  17:51 Найти цитируемый пост)
то все замечательно, а если подключаю ее из внешенего файла 
echo "<script type='text/javascript' src='script.js'></script>"; то перестают работать ВСЕ методй jquery. 

То есть если вместо 
Код

<script type='text/javascript' >
Ta-Самая-Функция ...
</script>

написать 
Код

<script type='text/javascript' src='script.js'></script>

и сбросить ту самую функцию в файл script.js, то все ломается? так не бывает...

Автор: Aver78 23.3.2008, 01:00
Я тоже так думал. Но вот есть. При чем не работает не только функция ассоциированная с данной формой, но отваливается функция которая выводит эту форму в определенный див, то есть просто вызывается этот скрип. В общем jquery падает полностью.
Кстати, такая же фигня была если я при обращении ajax  заново производил подключение скриптов.
Привожу пример.

файл 1
echo "<script type=\"text/javascript\" src=\"../include/jquery/jquery.latest.js\"></script>";
echo "<script type=\"text/javascript\" src=\"../include/jquery/jquery.ajaxContent.js\"></script>"; 
<div id=n1>
ссылка вызывающая файл 2, результат работы которого загружается при момощи jquery.ajaxContent.js в див nn2
</div>
<div id=n2>
(сюда будет загружен результат работы файла 2)
</div>

файл 2
echo "<script type=\"text/javascript\" src=\"../include/jquery/jquery.latest.js\"></script>";
echo "<script type=\"text/javascript\" src=\"../include/script.js\"></script>";

echo "Результат";


Так вот, если запускать в таком виде, то файл 2 будет вызван, как будто по обычной ссылке <a href="http://файл2">Файл 2</a>

А если убрать реконект скриптов, то все прекрасно загрузиться в див.

В чем проблема я не догоняю.







 

Автор: ksnk 23.3.2008, 08:34
А зачем jquery подключается второй раз?

Автор: Aver78 23.3.2008, 13:31
Ну это так, к примеру. 

файл 2
echo "<script type=\"text/javascript\" src=\"../include/script.js\"></script>";

echo "Результат";


Пусть будет так. Результат один и тот же.

Автор: ksnk 23.3.2008, 16:37
Боюсь, что никак... в подключаемом html не должно быть тегов script. Возможно и есть плагины, которые парсят входящий текст, но мне они неизвестны...
Хм... ерунда, однако...

Автор: Aver78 23.3.2008, 17:31
Дело в том, что я подключал таким образом, правда давно уже и не помню возникала ли такая проблема. Но все работало.

Автор: ksnk 23.3.2008, 17:53
Вообще-то да, должно работать... Может ошибки в тексте? FireBug ничего не говорит плохого?

Автор: Aver78 23.3.2008, 18:22
Хм, я забыл одну маленькую, но существенную деталь. Данный код не работает только в опере. Firefox  и IE кушают без проблем.
Просто у меня приоритетный браузер опера, вот и забыл указать. Но проблема остается проблемой. Opera 9.26

Автор: ksnk 23.3.2008, 19:09
вот такое работает в Опере
Код

<head>
<title>HellO!</title>
<script type='text/javascript' src='jquery.js'>
</script>
</head>
<body>
<input type='button' onclick="$('#test').load('test5.html')">
<div id='test'>
Just a test
</div>
</body>

test5.html
Код

<script type='text/javascript' src='jquery.validate.js'>
</script>
<script type='text/javascript' >
  $('#edit_admin').validate({
    submitHandler: function(form) {
      $(form).ajaxSubmit(options);
    },
    rules:    {
      email2: {
       required: true,
       minlength: 5,
       maxlength: 12,
       email: true
             }},
    messages: {
      email2: {
        required: 'Укажите свое имя!',
        minlength: 'Не менее 5 символов',
        maxlength: 'Не более 12 символов',
        email: 'Сие должно быть мылом'
    }}

   });
</script>
<form id="edit_admin">
<input type="text" name='email2'>
<input type="submit" value="&raquo;">

</form>



Добавлено через 28 секунд
Opera 9.26

Автор: Aver78 24.3.2008, 02:28
Забавные глюки продолжаются.
Использовал пример выше для обновления 2 дива после срабатывания формы. Все замечательно работает... но, 1 раз. То бишь див обновляется и juqery опять падает.

Автор: ksnk 24.3.2008, 08:02
как падает, куда падает, с какой высоты? FireBug помогает?

Если присмотреться к "коду выше", то можно понять, что форма ничего никуда разумно переслать не в состоянии, ответной части с стороны сервера у нее нет...

Автор: Aver78 24.3.2008, 16:41
Код

echo "<script language=\"JavaScript\">
$('#admin_modul_func').load('index.php?name=admin')
</script>\n"


Этот код вызызвается в файле ответа формы. Див формы обновляется этим файлом, а этот кусок обновляет другой див. Так вот после этого вызова jquery умирает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)