Собственно проблама проверки формы средствами jQuery validation форм, которые загружаются ajax. Сразу отмечу некоторые моменты. работаю на Code Igniter. (Серверный пхп фреймворк, если кто не знает) Для Слежения за уникальностью подключаемых скриптов следит специальный класс По ajax я загружаю/обрабатываю только формы Как было уже сказано, использую jQuery. он у меня побключен постоянно, так как и jQuryUI Дополнительные плагины, типа проверки формы и её отправки, я решил подключать по мере необходимости Тут и возникают трудности. По ajax я гружу в плавающий div, вернее виджет диалог, например такую форму PHP: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $this->load->helper(array('language', 'form')); $this->lang->load('user'); echo $this->gears->singlejs('validation'); ?> <script type="text/javascript"> $().ready(function() { // validate signup form on keyup and submit $("#register").validate({ rules: { username: { required: true, minlength: 3 }, userpass: { required: true, minlength: 6 } }, submitHandler: function() { formgears('register'); } }); }) </script> <form action="<?= part_url('register.htm') ?>" method="POST" id="register"> <div class="field"> <?= form_labelinput('username', set_value('username'), 'user_name') ?> </div> <div class="field"> <?= form_labelinput('userpass', '', 'user_pass') ?> <div class="right"> <button class="ui-state-default ui-corner-all" type="submit" style="padding:3px; margin:5px">Отправить</button> </div> </form> Немного, конечно сократил код. Меня смущает, что в блоке, который грузиться ajax присутствует [js] $().ready(function() {[/js] Так нормально, или нет? В теле документа уже встречается такая конструкция. Это работает, но насколько это правильно. Дальше такая конструкция PHP: echo $this->gears->singlejs('validation'); Класс, конечно, отследил, чтобы второй раз нигде не подключил (вернёт пустую строку) Но, если я вызову эту форму по ajax ещё раз получится, что я подключаю плагины повторно? Я же не смогу отследить, какие скрипты я подключил за предыдущим запросом. Думаю вопрос это давно решён, только я нигде не встречал решения. Надеюсь на вашу помощь.
В каком смысле ничего? Никаких js библиотек? Ну хорошо, А как тогда можно подгрузить вместе с формой правила для её проверки?
Ігор В чем вопрос? Не подключать библиотеку при аякс запросе? Ну так и не подключай. Определить аякс или нет - возможно. Нужно подключить валидаторы в любом случае? Ну так и подключай. Где ты споткнулся?
Так я потому и спрашиваю. Зачем мне валидаторы, если нет форм. Может целесообразно подключить валидаторы, только когда есть форма? Если мне понадобиться, 10 или 20 плагинов jQ не подключать все их же. На одной странице одни, на другой нужны другие. Споткнулся в основном на вот этом. Код (Text): <script type="text/javascript"> $().ready(function() { такой участок грузиться по ajax. Это нормально. Если нет, как это избежать. Правила проверки формы обязательно должны загружаться с ней.
Определили аякс или нет. Конструкцией if () пользоваться умеем? Вот с ее помощью это и разруливается. А насчет кода плагинов... можно все собрать в один большой файл, подключить его единожды и поставить соответствующие заголовки чтобы он закешировался раз и навсегда. Далее по коду подключаешь только свой(пользовательский) скрипт, типа валидаторов там где надо и т.д.
В php вестимо. Конечно можно $this->getRequest()->isXmlHttpRequest() за исходниками или в ZendFramework или в гугл jQuery посылает некоторые заголовки при аякс запросах. Вот их и надо смотреть.
Но все-равно. Когда форма будет загружена, необходимо добавить обработчик события отправки формы. Вот как это нормально сделать?
Элементарно Ватсон! В подгружаемом html [js]$(document).ready(function() { // добавляем обработчик })[/js]
Так я же и спрашивал в начале можно ли так PS: А какие заголовки надо отправить, чтобы браузер закешировал js?
Гм. Ну у тебя же работало. Что ты еще хотел? Спросить у нас разрешения? Зачем? За заголовками в поиск.