Сложность с плагином jQuery Validation и Django Admin - PullRequest
0 голосов
/ 21 января 2011

Я использую интерфейс администратора Django 1.2.4, jQuery 1.4.4 и плагин jQuery Validation .Я вижу некоторые странные проблемы.

Плагин проверки jQuery говорит, что он работает с jQuery 1.4.2.Может ли это быть причиной проблем, которые я использую 1.4.4?Я также использую jQuery UI, который требует 1.4.4.Как я могу использовать их оба?

Вот сценарии, которые включены в мою страницу администратора:

    # this will cause both jQuery 1.4.2 and 1.4.4 to be included. Not sure if that's a problem or not.
    # (jQ 1.4.2 is in the admin by default, but jQ-ui wants 1.4.4.)
    js = ("js/foo-slider.js", 
          "js/lib/jquery-1.4.4.min.js",
          "js/lib/jquery.validate.pack.js",
          "js/lib/sprintf.js",
          "js/lib/jquery-ui-slider/jquery.ui.core.js",
          "js/lib/jquery-ui-slider/jquery.ui.widget.js",
          "js/lib/jquery-ui-slider/jquery.ui.mouse.js",
          "js/lib/jquery-ui-slider/jquery.ui.slider.js",
          )

Пространства имен Django Admin от jQuery до django.jQuery, чтобы не нарушать другие сценарии, которые используют$ символ.(Администратор Django использует jQuery 1.4.2, который также включен в страницу.) Вверху моего foo-slider.js скрипта у меня есть строка:

var $ = django.jQuery;

Если я включаю скрипт плагина проверки jQuery, Я получаю следующее на консоли Firebug:

>>> $
function()

Затем я добавляю следующую строку кода в мой пользовательский файл JS:

$("form").validate();

Затем я получаю это в Firebugconsole:

>>> $
anonymous()

Это разочаровывает и, возможно, связано с более поздними проблемами.

Я добавляю этот код:

   $("form").validate();
   $(".required").nextAll('input').rules('add', {
           required: true 
      });

, но проверка не происходит.

Разметка выглядит следующим образом:

<form id="foo_form" method="post" action="" enctype="multipart/form-data"><div style="display: none;">

<!-- ... -->

  <fieldset class="module aligned ">    
        <div class="form-row foo">
                <div>
                        <label class="required" for="id_foo">Foo:</label>

                        <input type="text" name="foo" value="80" class="vIntegerField valid" id="id_foo">

                        <p class="help">help text</p>
                </div>
        </div> 

       <!-- ... --->
</form>

Затем я добавляю следующий метод в метод:

   $(sprintf("#%s, #%s, #%s", id_foo, id_bar, id_baz)).rules("add",
   {
       range: [slider.slider('option', 'min'), slider.slider('option', 'max')],
   });

(sprintf делает то, на что это похоже; аргументы id_*идентификаторы <input> элементов.) Теперь проверка происходит.Что здесь происходит?Я что-то не так делаю?

1 Ответ

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

возможно, страница noconflict может быть чем-то полезна? вместо

var $ = django.jQuery;

попробовать

(function($) { 
  //code that expects the $ alias
})(django.jQuery);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...