Я использую интерфейс администратора 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>
элементов.) Теперь проверка происходит.Что здесь происходит?Я что-то не так делаю?